C# 无法在ASP.NET C中更新GridView#
我正在尝试更新并显示我的网格视图中的值。它所做的是获取标签中的值,并在我尝试更新它时切换到TextBox。之后,我想在GridView之外的标签中显示该特定值C# 无法在ASP.NET C中更新GridView#,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在尝试更新并显示我的网格视图中的值。它所做的是获取标签中的值,并在我尝试更新它时切换到TextBox。之后,我想在GridView之外的标签中显示该特定值 <ItemTemplate> <asp:Label ID="Label4" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:Label> </ItemTemplate> <EditItemTemp
<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();
}
}
}
受保护的无效GridView1_行更新(对象发送方,GridViewUpdateEventArgs e)
{
dt=新数据表();
dt=(数据表)会话[“动画”];
dt.Rows[e.RowIndex][“产品数量”]=((文本框)GridView1.Rows[e.RowIndex].FindControl(“TextBox2”)).Text;
会话[“动画”]=dt;
GridView1.EditIndex=-1;
FillGrid();
重定向(“view_cart.aspx”);
}
受保护的void GridView1_RowDataBound1(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
DataRowView drv=e.Row.DataItem作为DataRowView;
如果(drv!=null)
{
sum+=Convert.ToInt32(((Label)e.Row.Cells[4].FindControl(“Label4”).Text);
results.Text=sum.ToString();
}
}
}
每当我尝试更新行时,它都会返回:“对象引用未设置为对象的实例。”atsum+=Convert.ToInt32(((Label)e.row.Cells[4].FindControl(“Label4”).Text)强>
有什么办法解决这个问题吗?编辑行时,将使用EditTemplate。在这个世界上没有标签。因此无法找到控件,代码将抛出异常。然后必须搜索TextBox2控件
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox>
</EditItemTemplate>
编辑行时,将使用EditTemplate。在这个世界上没有标签。因此无法找到控件,代码将抛出异常。然后必须搜索TextBox2控件
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Product_Quantity") %>'></asp:TextBox>
</EditItemTemplate>
我通过执行以下操作解决了此问题:-
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();
}
}
我通过以下方法解决了这个问题:-
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();
}
}
您在哪一行获得异常?位于:sum+=Convert.ToInt32(((Label)e.Row.Cells[4].FindControl(“Label4”).Text);您确定行的第四个单元格包含标签吗。单元格的索引从0开始。是的,它是。代码运行时没有任何问题,除非我选择编辑行。从那里,将引发异常。调试代码以找出哪个项为null,我猜是Label4,因为它是只读标记。在哪一行获得异常?位于:sum+=Convert.ToInt32(((Label)e.Row.Cells[4].FindControl(“Label4”).Text);您确定行的第四个单元格包含标签吗。单元格的索引从0开始。是的,它是。代码运行时没有任何问题,除非我选择编辑行。然后,将抛出异常。调试代码以找出哪个项为null,我猜是Label4,因为它是一个只读标记。