2011-04-27 92 views
0

當我將數據源綁定到GridView時,如果它的數據源中沒有記錄,它將不會顯示任何內容。如何使用GridView asp.net中的列顯示「找不到記錄」?

如果我在GridView中將數據設置爲EmptyDataText屬性,它將只顯示該文本。

,但我想顯示我的數據源的列,並且第一行必須在我的GridView中顯示「找不到記錄」。我該怎麼辦?

+0

你需要插入一個虛擬的記錄在您的數據源,或者使用了EmptyDataTemplate定製 – V4Vendetta 2011-04-27 06:13:31

+0

@ V4Vendetta那好 – 2011-04-27 06:16:06

+0

檢查此[鏈接](http://stackoverflow.com/questions/354369/gridview-show -headers-on-empty-data-source)4.0有一個ShowHeaderWhenEmpty屬性(我想這就是你想要的) – V4Vendetta 2011-04-27 06:30:59

回答

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"; 
     } 
+0

刪除這一行是因爲它會產生錯誤的設計行爲.gvDetails.Rows [0] .Cells [0] .ColumnSpan = TotalColumns; – 2011-04-27 07:57:28

+0

否則「找不到記錄」將僅出現在第一列中。 – varadarajan 2011-04-27 08:09:46

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(); 

輸出: enter image description here

+1

OP已經在使用那個..請仔細閱讀下面的問題 – V4Vendetta 2011-04-27 06:17:03

相關問題