无法在ASP.NET C#

时间:2017-09-27 14:30:29

标签: c# asp.net gridview

我正在尝试更新并显示 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);

关于如何解决这个问题的任何想法?

2 个答案:

答案 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();

    }

}