2010-11-23 58 views
1

即使綁定到網格的數據源是空的,我想顯示網格視圖的標題?有沒有什麼辦法可以在不添加空白行的情況下實現同樣的效果?網格視圖asp.net顯示標題如果沒有數據

+0

爲什麼你想要這樣做的原因...顯示空頭表單與單獨的標題? – 2010-11-23 14:09:40

回答

0

最簡單的方法是創建自己的繼承於GridView類的GridView。然後覆蓋CreateChildControls方法來創建一個新的空表。

像這樣的東西應該工作:

protected GridViewRow _footerRow2; 
protected GridViewRow _headerRow2; 

protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding) 
{ 
    // Call base method and get number of rows 
    int numRows = base.CreateChildControls(dataSource, dataBinding); 

    if (numRows == 0) 
    { 
     //no data rows created, create empty table 
     //create table 
     Table table = new Table(); 
     table.ID = this.ID; 

     //convert the exisiting columns into an array and initialize 
     DataControlField[] fields = new DataControlField[this.Columns.Count]; 
     this.Columns.CopyTo(fields, 0); 

     if (this.ShowHeader) 
     { 
      //create a new header row 
      _headerRow2 = base.CreateRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal); 

      this.InitializeRow(_headerRow2, fields); 
      _headerRow2.EnableTheming = true; 
      table.Rows.Add(_headerRow2); 
     } 

     if (this.ShowFooter) 
     { 
      //create footer row 
      _footerRow2 = base.CreateRow(-1, -1, DataControlRowType.Footer, DataControlRowState.Normal); 

      this.InitializeRow(_footerRow2, fields); 
      _footerRow2.EnableTheming = true; 
      table.Rows.Add(_footerRow2); 
     } 

     this.Controls.Clear(); 
     this.Controls.Add(table); 
    } 

    return numRows; 
} 

基本上,你檢查的GridView有任何行,如果沒有,那麼你創建的標題行和頁腳行(如果已啓用)。

編輯:

另外,如果你想仍表現出你的EmptyDataText,您可以添加這些行插圖中的頁眉和頁腳的創建。

GridViewRow emptyRow; 

if (this.EmptyDataTemplate != null) 
{ 
    emptyRow = this.Controls[0].Controls[0] as GridViewRow; 
} 
table.Rows.Add(emptyRow); 
0

隨着ASP.NET 4中,您可以在GridView的ShowHeaderWhenEmpty屬性設置爲true