我正在尝试更新并显示 GridView 中的值。它的作用是获取标签中的值,并在我尝试更新时切换到 TextBox 。之后,我想在 GridView 之外的标签中显示该特定值。
<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();
}
}
}
每当我尝试更新行时,它将返回:&#39;对象引用未设置为对象的实例。&#39; at sum + = Convert.ToInt32(((Label)e.Row.Cells [4] .FindControl(&#34; Label4&#34;))。Text);
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
编辑行时,使用EditTemplate。并且没有Label4。因此无法找到控件,代码将抛出异常。然后,您必须搜索TextBox2控件。
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox>
</EditItemTemplate>
答案 1 :(得分:0)
我设法通过执行以下操作来解决此问题: -
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();
}
}