将数据设置为GridView中的标签

时间:2014-07-28 08:20:27

标签: asp.net

我在asp GridView中有一个标签,我想为它设置绑定数据。
这是我的RowDataBound方法:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    var name = (Label)e.Row.FindControl("Label_name");
    name.Text ="sara";      
    name.DataBind();
}

这是我的GridView:

<asp:GridView ID="GridViewCertificateType" runat="server" AutoGenerateColumns="False"   OnRowDataBound="GridView1_RowDataBound" >

<asp:Label ID="Label_name" runat="server" Text="" ></asp:Label>

但是在name.Text ="sara";之后,我收到了这个例外:

Object reference not set to an instance of an object. 

2 个答案:

答案 0 :(得分:1)

试试这个

var name= (Label)e.Row.Cells[X].FindControl("Label_name");
name.Text ="sara";      
name.DataBind();

X表示列的索引

答案 1 :(得分:1)

在RowDataBound方法中,确保您有条件检查行的类型。将为GridView中的每一行调用此事件,包括页眉和页脚行。如果在标题行中找不到Label_name,则您将拥有一个空对象。一旦你这样做,就摆脱name.DataBind();,因为它不需要。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var name = (Label)e.Row.FindControl("Label_name");
        name.Text = "sara"; 
    }
}