Jos*_*son 74 asp.net gridview header
在C#中,即使数据源为空,我仍然会显示gridview的标题.
我不是自动生成列,因为它们都是预定义的.
目前我正在做的是以下内容.
从存储过程中获取DataTable,然后设置gridview的DataSource,然后调用DataBind().
当我有数据时,这工作正常,但是当没有返回任何行时,我只得到一个空白点,网格应该是.
编辑:感谢所有.NET 4+属性.我在.NET 3.5天里问过这个问题.现在这更容易了.:)
zac*_*ydl 129
ASP.Net 4.0添加了boolean ShowHeaderWhenEmpty属性.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.showheaderwhenempty.aspx
<asp:GridView runat="server" ID="GridView1" ShowHeaderWhenEmpty="true" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="First Name" DataField="FirstName" />
<asp:BoundField HeaderText="Last Name" DataField="LastName" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
注意:除非使用null以外的其他内容调用DataBind(),否则不会显示标题.
GridView1.DataSource = New List(Of String)
GridView1.DataBind()
Run Code Online (Sandbox Code Playgroud)
Jos*_*son 34
发布后我确实提出了一种有效的方法.但是,我觉得这不是解决这个问题的最佳方法.有关更好的建议吗?
//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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202816 次 |
| 最近记录: |