Usuário com melhor resposta
Gridview com dropdownlist não atualiza

Pergunta
-
Opa a todos
Pessoal tenho um gridview simples e 3 das suas colunas é um dowpdowlist que tem apenas 2 valores Sim e Nao. Quando eu carrego o grid ele mostra tudo certinho mas quando eu clico no editar e troco o valor do dropdonw ele não atualiza no banco. o q eu devo fazer para conseguir esta atualização?
Obrigado
<asp:GridView ID="gvDados" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" DataSourceID="odsDados" ForeColor="#333333" GridLines="None" Width="740px"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:CommandField ShowEditButton="True" ButtonType="Image" CancelImageUrl="~/imagens/cancelar.png" CancelText="Cancelar" DeleteText="Excluir" EditImageUrl="~/imagens/edit-icon.gif" EditText="Editar" UpdateImageUrl="~/imagens/save-icon.gif" UpdateText="Gravar" > <ItemStyle HorizontalAlign="Center" Wrap="False" /> </asp:CommandField> <asp:TemplateField HeaderText="Código" SortExpression="codigo"> <ItemTemplate> <asp:Label ID="Label2a" runat="server" Text='<%# bind("codigo") %>'></asp:Label> </ItemTemplate> <ItemStyle HorizontalAlign="Center" Width="60px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Capa" SortExpression="capa"> <ItemTemplate> <asp:Label ID="Label2c" runat="server" Text='<%# iif(eval("abertura")=0,"Sim","Não") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList ID="DropDownList1" SelectedValue='<%# eval("abertura") %>' runat="server" > <asp:ListItem Value="0">Sim</asp:ListItem> <asp:ListItem Value="1">Não</asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemStyle HorizontalAlign="Center" Width="100px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Oportunidade" SortExpression="oportunidade"> <ItemTemplate> <asp:Label ID="Label2d" runat="server" Text='<%# iif(eval("oportunidade")=0,"Sim","Não") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList ID="DropDownList2" SelectedValue='<%# eval("oportunidade") %>' runat="server"> <asp:ListItem Value="0">Sim</asp:ListItem> <asp:ListItem Value="1">Não</asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemStyle HorizontalAlign="Center" Width="100px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Destaque" SortExpression="destaque"> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# iif(eval("destaque")=0,"Sim","Não") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList ID="DropDownList3" SelectedValue='<%# eval("destaque") %>' runat="server"> <asp:ListItem Value="0">Sim</asp:ListItem> <asp:ListItem Value="1">Não</asp:ListItem> </asp:DropDownList> </EditItemTemplate> <ItemStyle HorizontalAlign="Center" Width="100px" /> </asp:TemplateField> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> <asp:ObjectDataSource ID="odsDados" runat="server" SelectMethod="lista" TypeName="bllDestaques" UpdateMethod="atualiza"> <SelectParameters> <asp:Parameter DefaultValue="-1" Name="op" Type="Int32" /> <asp:Parameter DefaultValue="" Name="valor" Type="String" /> </SelectParameters> <UpdateParameters> <asp:Parameter Name="codigo" Type="Int32" /> <asp:Parameter Name="abertura" Type="Int32" /> <asp:Parameter Name="destaque" Type="Int32" /> <asp:Parameter Name="oportunidade" Type="Int32" /> </UpdateParameters> </asp:ObjectDataSource>
Respostas
-
Pessoal eu consegui resolver alterando a propriedade do updating do gridview e do objectdatasource com o seguinte codigo:
Protected Sub odsDados_Updating(sender As Object, e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) Handles odsDados.Updating e.InputParameters("abertura") = odsDados.UpdateParameters.Item("abertura").DefaultValue e.InputParameters("destaque") = odsDados.UpdateParameters.Item("destaque").DefaultValue e.InputParameters("oportunidade") = odsDados.UpdateParameters.Item("oportunidade").DefaultValue End Sub Protected Sub gvDados_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvDados.RowUpdating odsDados.UpdateParameters.Item("codigo").DefaultValue = CInt(DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(2).FindControl("Label2a"), Label).Text) odsDados.UpdateParameters.Item("abertura").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(5).FindControl("DropDownList1"), DropDownList).SelectedValue odsDados.UpdateParameters.Item("destaque").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(7).FindControl("DropDownList3"), DropDownList).SelectedValue odsDados.UpdateParameters.Item("oportunidade").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(6).FindControl("DropDownList2"), DropDownList).SelectedValue End Sub
Agora gostaria de saber se isto é o certo mesmo pois me pareceu meio gambiarra.
Obrigado
- Marcado como Resposta Joao Nivaldo quinta-feira, 29 de novembro de 2012 14:26
Todas as Respostas
-
-
Samuel boa noite,
olha não tem evento algum simplesmente ele chama a minha funcao atualiza que esta na minha camada de negocios algo bem simples que recebe os 3 parametros e grava. Quando eu faco a depuracao so chega na funcao o codigo os outros parametros vem todos como 0 e nao com o valor q eu escolhi.
-
Pessoal eu consegui resolver alterando a propriedade do updating do gridview e do objectdatasource com o seguinte codigo:
Protected Sub odsDados_Updating(sender As Object, e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) Handles odsDados.Updating e.InputParameters("abertura") = odsDados.UpdateParameters.Item("abertura").DefaultValue e.InputParameters("destaque") = odsDados.UpdateParameters.Item("destaque").DefaultValue e.InputParameters("oportunidade") = odsDados.UpdateParameters.Item("oportunidade").DefaultValue End Sub Protected Sub gvDados_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvDados.RowUpdating odsDados.UpdateParameters.Item("codigo").DefaultValue = CInt(DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(2).FindControl("Label2a"), Label).Text) odsDados.UpdateParameters.Item("abertura").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(5).FindControl("DropDownList1"), DropDownList).SelectedValue odsDados.UpdateParameters.Item("destaque").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(7).FindControl("DropDownList3"), DropDownList).SelectedValue odsDados.UpdateParameters.Item("oportunidade").DefaultValue = DirectCast(DirectCast(sender, GridView).Rows(e.RowIndex).Cells(6).FindControl("DropDownList2"), DropDownList).SelectedValue End Sub
Agora gostaria de saber se isto é o certo mesmo pois me pareceu meio gambiarra.
Obrigado
- Marcado como Resposta Joao Nivaldo quinta-feira, 29 de novembro de 2012 14:26