当我将数据源绑定到GridView时,如果它在我的数据源中没有记录,则它不会显示任何内容。
如果我在GridView中将数据设置为EmptyDataText属性,它将只显示该文本。
,但我想显示我的数据源列,第一行必须在我的GridView中显示“找不到记录”。我该怎么办?
答案 0 :(得分:2)
当数据表为空时,创建一个新行,然后在将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";
}
答案 1 :(得分:0)
你可以创建一个扩展方法,看看是否有记录,然后添加一行,说“找不到记录”。比如:
您的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();
<强>输出:强>