當我將數據源綁定到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