当前位置:  开发笔记 > 编程语言 > 正文

GridView - 在空数据源上显示标题

如何解决《GridView-在空数据源上显示标题》经验,为你挑选了3个好方法。

在C#中,即使数据源为空,我仍然会显示gridview的标题.

我不是自动生成列,因为它们都是预定义的.

目前我正在做的是以下内容.

从存储过程中获取DataTable,然后设置gridview的DataSource,然后调用DataBind().

当我有数据时,这工作正常,但是当没有返回任何行时,我只得到一个空白点,网格应该是.

编辑:感谢所有.NET 4+属性.我在.NET 3.5天里问过这个问题.现在这更容易了.:)



1> zacharydl..:

ASP.Net 4.0添加了boolean ShowHeaderWhenEmpty属性.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.showheaderwhenempty.aspx



    
        
        
    

注意:除非使用null以外的其他内容调用DataBind(),否则不会显示标题.

GridView1.DataSource = New List(Of String)
GridView1.DataBind()


确保至少对数据绑定,ShowHeadersWhenEmpty至少需要一个空列表数据绑定.
@Tenerezza提到的内容很重要,请在答案中加入.这样可以节省一些时间.

2> Joshua Hudso..:

发布后我确实提出了一种有效的方法.但是,我觉得这不是解决这个问题的最佳方法.有关更好的建议吗?

//Check to see if we get rows back, if we do just bind.

if (dtFunding.Rows.Count != 0)
{
    grdFunding.DataSource = dtFunding;
    grdFunding.DataBind();
}
else
{
  //Other wise add a emtpy "New Row" to the datatable and then hide it after binding.

     dtFunding.Rows.Add(dtFunding.NewRow());
     grdFunding.DataSource = dtFunding;
     grdFunding.DataBind();
     grdFunding.Rows[0].Visible = false;
}



3> StriplingWar..:

我刚刚解决了这个问题,这些解决方案都不适用于我.我无法使用该EmptyDataTemplate属性,因为我是GridView使用自定义字段动态创建的,这些字段在标题中提供过滤器.我无法使用发布的almny示例,因为我使用ObjectDataSource的是s而不是DataSetDataTable.但是,我发现这个答案发布在另一个StackOverflow问题上,该问题链接到这个优雅的解决方案,我能够为我的特定情况工作.它涉及重写CreateChildControls的方法GridView创造条件,已创建了有过实际数据相同的标题行.我认为值得发布在这里,其他人可能会在类似的修复程序中找到它.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有