将数据动态添加到网格视图中的asp文字控件

时间:2011-09-05 15:11:39

标签: c# asp.net

我正在尝试将数据添加到gridview中的文字中。目前代码看起来像这样

protected void GvListingRowDataBound(object sender, GridViewRowEventArgs e)
{
       var query = DisplayAllData();
       Literal info = (Literal)e.Row.FindControl("ltritemInfo");

       if(query != null)
       {
           foreach (var listing in query)
           {
               var list = DisplayListById(listing.id);
               info.Text = "<h3>" + list.title + "</h3>";
               info.Text += "<h4>" + list.description + "</h4>";
           }
       }
}

这将产生错误

  

对象引用未设置为对象的实例。

如果有人对此有所了解,那将是很好的帮助

由于

1 个答案:

答案 0 :(得分:5)

确保您只对数据行进行操作,而不是对页眉,页脚,分隔符,寻呼机等进行操作。枚举为DataControlRowtype。这就是您的info对象/引用为空的原因,因为它首先在标题上操作。

  • 检查e.Row.RowTypeDataRow类型。
  • 为安全起见,还要检查您的info是否为空。
protected void GvListingRowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {        
       var query = DisplayAllData();
       Literal info = (Literal)e.Row.FindControl("ltritemInfo");

       if(query != null && info !=null) 
       {
           foreach (var listing in query)
           {
                var list = DisplayListById(listing.id);
                info.Text = string.Format("<h3>{0}</h3><h4>{1}</h4>",
                               list.title, list.description);    
           }
       }
   }
}