none
DropDalList e TextBox Asp.Net RRS feed

  • Pergunta

  • Oi tenho uma duvida, tenho uma tabela de produtos que tem codigo, nome do produto, e seu valor no meu web form eu tenhu um dropdallist que me tras uma lista de produtos e tenho um texbox pra que quando eu selecionar um produto na dropdallist o valor do produto selecionado seja inserido no textbox valor, eu tentei fazer o codigo a baixo mas nai funcionou, a unica coisa que consegui foi carregar a dropdallist com a descricao do produto nao estou conseguindo carregar o text box com o valor do produto, ajudem por favor.

    if (!IsPostBack)
    {
        BLL.Produtos bllProd = new BLL.Produtos();
        dropdallistProduto.DataTextField = "DescricaoProduto";
        dropdallistProduto.DataValueField = "Valor";
        dropdallistProduto.DataValueField = "CodigoTblProduto";
        dropdallistProduto.DataSource = bllProd.Select();
        Layers.Produtos obProd = new Layers.Produtos();
        obProd = bllProd.Select(dropdallistProduto.Text.Replace(" ", ""));
        txtValor.Text = obProd.Valor.ToString();
        dropdallistProduto.DataSource = bllProd.Select();
        dropdallistProduto.DataBind();
    
     Cache["OP"] = "?";
     }

    sexta-feira, 2 de novembro de 2012 16:37

Respostas

  • Bom dia amigo, não seria possível trabalhar com os dois valores no DataValueField, você precisa captura o código do produto selecionado? o AutoPostBack do dropdownlist tem que ser true também, assim no momento que algum item for selecionado ocorre o postback e o evento SelectedIndexChanged é disparado, veja um exemplo:

    ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ComboPostback.aspx.cs" Inherits="JQTest.ComboPostback" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            Selecione um produto:<br />
            <asp:DropDownList ID="ddlProdutos" runat="server" AutoPostBack="True" 
                Width="119px" onselectedindexchanged="ddlProdutos_SelectedIndexChanged">
                <asp:ListItem Value="1,50">Lápis</asp:ListItem>
                <asp:ListItem Value="4,80">Caderno</asp:ListItem>
                <asp:ListItem Value="8,90">Apontador</asp:ListItem>
            </asp:DropDownList>
            <br />
            Preço(R$):<br />
            <asp:TextBox ID="txtPreco" runat="server" Width="84px"></asp:TextBox>
        
        </div>
        </form>
    </body>
    </html>

    ASPX.CS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace JQTest
    {
        public partial class ComboPostback : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    txtPreco.Text = ddlProdutos.SelectedValue;
                }
            }
    
            protected void ddlProdutos_SelectedIndexChanged(object sender, EventArgs e)
            {
                txtPreco.Text = ddlProdutos.SelectedValue;
            }
        }
    }

    Caso precise também do código do produto para realizar alguma outra operação, deixe o cdProduto no DataValueField do seu DropDownList e no evento SelectedIndexChanged use o código para encontrar o produto em sua base de dados e retornar o preço.



    Rodrigo Reis Ferreira
    Microsoft Certified


    segunda-feira, 12 de novembro de 2012 11:41