Usuário com melhor resposta
Selecionar o DataValueField de um DropDownList dentro de um GridView

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.
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
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
-