1

代码隐藏,

我得到以下错误对象引用未设置为对象的实例。

受保护的无效GridView1_RowDataBound(对象发送者,GridViewRowEventArgs e){

        if (e.Row.RowType == DataControlRowType.DataRow)
        {

          string  a = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "item_id")) ;
          string b = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "order_id"));
            Label lbl = (Label)GridView1.FindControl("Label5");

                int sum = int.Parse(a) + int.Parse(b);
                lbl.Text += sum.ToString();

        }
    }
4

3 回答 3

1

根据您的Label5控件的位置,应该有两种可能性:

  1. 如果标签被添加到Gridview1.Controls集合中,那么您应该能够通过以下方法访问它:

    void GridView1_PreRender(object sender, EventArgs e)
    {
        Label lbl = (Label)GridView1.FindControl("Label5");
    
    }
    
  2. 如果为每一行添加标签,例如这样:

    void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        var label = new Label();
        label.ID = "Label5";
        label.Text = "label";
        var cell = new TableCell();
        cell.Controls.Add(label);
        e.Row.Controls.Add(cell);
    }
    

    为了在您的GridView1_RowDataBound方法中找到标签,您应该使用:

    e.Row.FindControl("Label5");
    
于 2012-11-29T10:42:56.227 回答
1

Label lbl = (Label)GridView1.FindControl("Label5");将其写入 OnDataBound 事件。

于 2012-11-29T11:09:53.303 回答
1

确保您的网格项目标签 id 与 FindControl id 后面的代码相同。

foreach (GridViewRow row in gv_Name.Rows)                        {
{
 Label name = (Label)row.FindControl("lblitemNameId");
}
于 2017-12-30T10:54:29.550 回答