none
Selecionar o DataValueField de um DropDownList dentro de um GridView RRS feed

  • Pergunta

  • Olá, estou com o seguinte problema. Tenho um DropDownList populadata com dados de um banco.

    Ao clicar no botão selecionar, além do Id do produto (que obtenho pelo CommandArgument) preciso obter o DataValueField do DropDownList ddModelos presente na mesma linha, porém não consigo encontrar o controle dentro da GridView.

    Segue o código a Grid:

    <asp:GridView ID="gvDescricao" runat="server" AutoGenerateColumns="False" CellSpacing="1"
                    EmptyDataText="Nenhum produto foi encontrado para o cadastro de estoque!" AllowPaging="True"
                    PageSize="20" EnableModelValidation="True" CssClass="GridViewStyle" GridLines="None"
                    OnRowDataBound="gvDescricao_RowDataBound" OnPageIndexChanging="gvDescricao_PageIndexChanging">
                    <Columns>
                        <asp:TemplateField HeaderText="Id" Visible="false">
                            <ItemTemplate>
                                <asp:Label ID="lblId" runat="server" Text='<%#Bind("Id") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Código">
                            <ItemTemplate>
                                <asp:Label ID="lblGCodigo" runat="server" Text='<%#Bind("Codigo") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Título">
                            <ItemTemplate>
                                <asp:Label ID="lblCDescricao" runat="server" Text='<%#Bind("Descricao") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Categoria">
                            <ItemTemplate>
                                <asp:Label ID="lblCCategoria" runat="server" Text='<%#Bind("objCategoria.Categoria") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Fabricante">
                            <ItemTemplate>
                                <asp:Label ID="lblCFabricante" runat="server" Text='<%#Bind("objFabricante.Fabricante") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Data Recebimento">
                            <ItemTemplate>
                                <asp:Label ID="lblCDataRecebimento" runat="server" Text='<%#Bind("DataRecebimento", "{0:dd/MM/yyyy}") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Ficha Modelo">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddModelos" runat="server">
                                </asp:DropDownList>
                                <asp:Button ID="btnSelecionar" CommandArgument='<%#Bind("Id")%>' runat="server" Text="Selecionar"
                                    OnCommand="btnSelecionar_Command" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

     

    Segue o CodeBehind de onde eu preciso encontrar o valor:

     

     protected void btnSelecionar_Command(object sender, CommandEventArgs e)
            {
                int idProduto = Convert.ToInt32(e.CommandArgument.ToString());

                voProdutos objVO = new daoProdutos().produtosEnviarParaDescricao(idProduto);

                Session["Id"] = objVO.Id;
                Session["Codigo"] = objVO.Codigo;
                Session["Descricao"] = objVO.Descricao;

                Response.Redirect("~/Modelos/Modelo.aspx");
            }

    Nesse mesmo trecho de código, além que obter o idProduto, eu preciso obter o DataValueField selecionado do DropDownList ddModelos. Realmente não sei como encontrar o controle.

     

    quarta-feira, 7 de dezembro de 2011 14:01

Respostas

  • Veja se isso ajuda:

    // Identifica o botão que foi clicado
    Button clickedButton = (Button)sender;
    // Identifica a linha que contém o botão
    GridViewRow row = (GridViewRow)clickedButton.Parent.Parent;

    // Acessa os controles da célula
    DropDownList drop = row.Cells[6].FindControl("ddModelos") as DropDownList;
    string valor = drop.SelectedValue;

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    • Marcado como Resposta geanito quinta-feira, 8 de dezembro de 2011 14:16
    quarta-feira, 7 de dezembro de 2011 14:24
    Moderador

Todas as Respostas

  • Veja se isso ajuda:

    // Identifica o botão que foi clicado
    Button clickedButton = (Button)sender;
    // Identifica a linha que contém o botão
    GridViewRow row = (GridViewRow)clickedButton.Parent.Parent;

    // Acessa os controles da célula
    DropDownList drop = row.Cells[6].FindControl("ddModelos") as DropDownList;
    string valor = drop.SelectedValue;

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    • Marcado como Resposta geanito quinta-feira, 8 de dezembro de 2011 14:16
    quarta-feira, 7 de dezembro de 2011 14:24
    Moderador
  • Valeu Fernando, era isso que precisava. Abraço!
    quinta-feira, 8 de dezembro de 2011 14:17