2017-09-27 1 views
1

J'essaie de mettre à jour et d'afficher une valeur présente dans mon GridView. Ce qu'il fait, c'est qu'il obtient une valeur présente dans l'étiquette et passe à TextBox lorsque j'essaie de le mettre à jour. Ensuite, je voudrais afficher cette valeur particulière dans une étiquette en dehors de la GridView.Impossible de mettre à jour GridView dans ASP.NET C#

<ItemTemplate> 
    <asp:Label ID="Label4" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:Label> 
</ItemTemplate> 
<EditItemTemplate> 
    <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox> 
</EditItemTemplate> 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    dt = new DataTable(); 
    dt = (DataTable)Session["anime"]; 

    dt.Rows[e.RowIndex]["Product_Quantity"] = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text; 

    Session["anime"] = dt; 
    GridView1.EditIndex = -1; 

     FillGrid(); 


    Response.Redirect("view_cart.aspx"); 
} 



protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRowView drv = e.Row.DataItem as DataRowView; 
     if (drv != null) 
     { 
      sum += Convert.ToInt32(((Label)e.Row.Cells[4].FindControl("Label4")).Text); 
      results.Text = sum.ToString(); 
     } 
    } 


} 

Chaque fois que je tente de mettre à jour la ligne, il retournera: « référence d'objet non définie à une instance d'un objet. » à sum + = Convert.ToInt32 (((Label) e.Row.Cells [4] .FindControl ("Label4")). Texte);

Des idées pour résoudre ce problème?

+0

Sur quelle ligne obtenez-vous l'exception? –

+0

At: sum + = Convert.ToInt32 (((Label) e.Row.Cells [4] .FindControl ("Label4")). Texte); –

+0

Etes-vous sûr que la quatrième cellule de la ligne contient l'étiquette. L'index des cellules commence à 0. –

Répondre

0

Lorsque vous modifiez la ligne, le EditTemplate est utilisé. Et dans le il n'y a pas Label4. Donc, le contrôle ne peut pas être trouvé et le code jettera l'exception. Vous devez ensuite rechercher le contrôle TextBox2.

<EditItemTemplate> 
    <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox> 
</EditItemTemplate> 
+0

merci pour les heads up, j'ai réussi à résoudre ce problème. –

0

j'ai réussi à résoudre ce problème en procédant comme suit: -

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit) 
    { 


    } 

    else if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     sum += Convert.ToInt32(((Label)e.Row.Cells[4].FindControl("Label4")).Text); 
     results.Text = sum.ToString(); 

    } 

}