当我将数据源绑定到GridView时,如果它的数据源中没有记录,它将不会显示任何内容。如何使用GridView asp.net中的列显示“找不到记录”?
如果我在GridView中将数据设置为EmptyDataText属性,它将只显示该文本。
,但我想显示我的数据源的列,并且第一行必须在我的GridView中显示“找不到记录”。我该怎么办?
当我将数据源绑定到GridView时,如果它的数据源中没有记录,它将不会显示任何内容。如何使用GridView asp.net中的列显示“找不到记录”?
如果我在GridView中将数据设置为EmptyDataText属性,它将只显示该文本。
,但我想显示我的数据源的列,并且第一行必须在我的GridView中显示“找不到记录”。我该怎么办?
当一个数据表是空的,创建一个集columspan到后一个新的行和绑定细胞计数。
DataTable dtTable = GetData();
if (dtTable.Rows.Count > 0)
{
gvDetails.DataSource = dtTable;
gvDetails.DataBind();
}
else
{
dtTable.Rows.Add(dtTable.NewRow());
gvDetails.DataSource = dtTable;
gvDetails.DataBind();
int TotalColumns = gvDetails.Rows[0].Cells.Count;
gvDetails.Rows[0].Cells.Clear();
gvDetails.Rows[0].Cells.Add(new TableCell());
gvDetails.Rows[0].Cells[0].ColumnSpan = TotalColumns;
gvDetails.Rows[0].Cells[0].Text = "No Record Found";
}
删除这一行是因为它会产生错误的设计行为.gvDetails.Rows [0] .Cells [0] .ColumnSpan = TotalColumns; – 2011-04-27 07:57:28
否则“找不到记录”将仅出现在第一列中。 – varadarajan 2011-04-27 08:09:46
您可以创建一个扩展方法,它会查看是否没有记录,然后添加一行,表示“找不到记录”。比如像:
您grid.ValidateRecords();
,或者您可以在数据源级别添加扩展方法。比如像:
public static class Extensions
{
public static DataSet HasData(this DataSet ds)
{
if (ds == null || ds.Tables.Count < 1 || ds.Tables[0].Rows.Count < 1)//add more validation, if dataset is not null?
{
DataTable dt = new DataTable("Table1");
dt.Columns.Add("Col1");
DataRow dr = dt.NewRow();
dr["Col1"] = "No records found";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
}
return ds;
}
}
用法:
gridView1.DataSource = myDataSet.HasData();
输出:
OP已经在使用那个..请仔细阅读下面的问题 – V4Vendetta 2011-04-27 06:17:03
你需要插入一个虚拟的记录在您的数据源,或者使用了EmptyDataTemplate定制 – V4Vendetta 2011-04-27 06:13:31
@ V4Vendetta那好 – 2011-04-27 06:16:06
检查此[链接](http://stackoverflow.com/questions/354369/gridview-show -headers-on-empty-data-source)4.0有一个ShowHeaderWhenEmpty属性(我想这就是你想要的) – V4Vendetta 2011-04-27 06:30:59