2010-11-23 7 views
1

グリッドにバインドされたデータソースが空であっても、グリッドビューのヘッダを表示したいですか? BLANK行を追加せずに同じことを達成する方法はありますか?グリッドビューasp.netデータなしの場合のヘッダの表示

+0

あなたはそのようにしたいのですが...ヘッダーだけで空のgridviewを表示していますか? –

+1

データソースが空の場合、空白スペースを表示する必要があります(「No Items Found」というテキストが表示されている可能性があります)。彼/彼女はそれを理解できません。 – Rauf

+0

私は同意します。データがない場合でも列ヘッダーを表示することは時々役に立ちます。 – Jamie

答えて

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コントロールが行を持っているかどうかを確認して。

EDIT:また

、あなたはまだEmptyDataTextを表示したい場合、あなたは、ヘッダーとフッターの作成わたってるしき、これらの行を追加することができます。 ASP.NET 4のよう

GridViewRow emptyRow; 

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

、あなたはtrueへのGridViewのShowHeaderWhenEmptyプロパティを設定することができます。

関連する問題