Ich möchte eine Grid-Ansicht 'Header anzeigen, auch wenn die Datenquelle, die an das Raster gebunden ist, leer ist? Gibt es eine Möglichkeit, dasselbe zu erreichen, ohne eine BLANK-Zeile hinzuzufügen?Grid-Ansicht asp.net show header wenn keine Daten
1
A
Antwort
0
Der einfachste Weg wäre, ein eigenes GridView zu erstellen, das von der Klasse GridView
erbt. Überschreiben Sie dann die CreateChildControls
Methode, um eine neue leere Tabelle zu erstellen.
So etwas sollte funktionieren:
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;
}
Grundsätzlich Sie überprüfen, ob die Gridview alle Zeilen hat und es ihr dann nicht die Zeile und Fußzeile Zeilenkopf erstellen (wenn sie aktiviert sind).
EDIT:
Auch, wenn Sie Ihre EmptyDataText noch zeigen wollen, können Sie diese Linien dazwischen die Erstellung der Kopf- und Fußzeilen hinzufügen könnten.
GridViewRow emptyRow;
if (this.EmptyDataTemplate != null)
{
emptyRow = this.Controls[0].Controls[0] as GridViewRow;
}
table.Rows.Add(emptyRow);
0
Ab ASP.NET 4 können Sie die ShowHeaderWhenEmpty
Eigenschaft des Gridview true
gesetzt.
Aus welchem Grund möchten Sie das tun ... zeigt leere Gridview mit Header allein? –
Wenn die Datenquelle leer ist, muss der Benutzer eine Leerstelle anzeigen (wahrscheinlich mit dem Text 'No Items Found'). und er/sie kann es nicht verstehen. – Rauf
stimme ich zu. Es ist manchmal gut, die Spaltenüberschriften anzuzeigen, auch wenn keine Daten vorhanden sind. – Jamie