GridView Editável em C#

Prezados,

Boa tarde!

Estou desenvolvendo uma ferramenta, em C#, e estou com a necessidade de editar dados listados em um GidView.

Ao acionar o método para de edição do Grid, eu consigo editar normalmente os dados da linha selecionada, e quando vou pegar a informação editada via Grid para salvar, a informação retornada do Grid não é a informação editada, e sim a informação carregada anterior a edição.

Alguém consegue me ajudar?

O que estou fazendo de errado?

Segue código ASP do grid:

<asp:GridView ID="GwTeste" 
         runat="server" 
         CellPadding="4" 
         ForeColor="#00498A" 
         GridLines="None" 
         PageSize="15"
         AllowPaging="True" 
         AutoGenerateColumns="False" 
         DataKeyNames="chave"
         OnRowCancelingEdit="GwTeste_RowCancelingEdit" 
         OnRowEditing="GwTeste_RowEditing"
         OnRowUpdating="GwTeste_RowUpdating"
         OnPageIndexChanging="GwTeste_PageIndexChanging" 
         OnSelectedIndexChanged="GwTeste_SelectedIndexChanged" 
	 OnRowDataBound="GwTeste_RowDataBound">     

     <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
     <Columns>
         <asp:BoundField DataField="chave" HeaderText="Código" />
         <asp:TemplateField HeaderText="Inform">
             <ItemTemplate>
                 <%# Eval("descricao") %>
             </ItemTemplate>
             <EditItemTemplate>
                 <asp:TextBox ID="txbDescricao"
                     runat="server"
                    Text='<%# Eval("descricao") %>' >
                 </asp:TextBox>
             </EditItemTemplate>
         </asp:TemplateField>
         <asp:CommandField
             CancelImageUrl="~/Icons/xRedondo256x256.png"
             DeleteImageUrl="~/Icons/picaPapel256x256.png"
             EditImageUrl="Icons/lapis-512x512.png"
             EditText=""
             HeaderText="Editar 1"
             ButtonType="Image"
             ShowEditButton="True"
             ShowDeleteButton="True" 
             CausesValidation="False" 
	     UpdateImageUrl="~/Icons/salvar128x128.png">
         <ControlStyle CssClass="icoGrid" />
         <HeaderStyle CssClass="gridHeaderWidth" />
         </asp:CommandField>
     </Columns>
     <EditRowStyle BackColor="#CCCCCC" />
     <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>

Código C#

protected void GwTeste_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GwTeste.EditIndex = -1;
    carregaGrid();
}

protected void GwTeste_RowEditing(object sender, GridViewEditEventArgs e)
{
    GwTeste.EditIndex = e.NewEditIndex;
    carregaGrid();
}

protected void GwTeste_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int id = Convert.ToInt32(GwTeste.DataKeys[e.RowIndex].Value.ToString());

    string informacao = ((TextBox)GwTeste.Rows[e.RowIndex].FindControl("txbDescricao")).Text;
    
	GwTeste.EditIndex = -1;
	carregaGrid();
}

protected void GwTeste_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GwTeste.PageIndex = e.NewPageIndex;
    carregaGrid();
}

protected void GwTeste_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowState == 
        (DataControlRowState.Edit| DataControlRowState.Alternate)
            | e.Row.RowState == DataControlRowState.Edit)
    {
        return;
    }
}

Desde já agradeço!!!

1 curtida

Vou dizer como experiência própria, não use GridView para edição de registros, e ai já começa os erros, os problemas, porque?

O GridView mesmo tendo as opções precitadas, não é a melhor solução para alteração de registros, então separar a responsabilidade também é papel de uma boa programação na parte do Front End.

Então, GridView mostra dados, pagina, mostra com filtros, e faça outra tela para gravar alterações dos registros, é assim que deve ser.

1 curtida