2010-10-25 4 views

Antwort

24

asp:Table unterstützt diese Elemente nicht.

Update: Wie jameh's answer zeigt, ist der Satz oben völlig falsch: die TableSection Eigenschaft ermöglicht zu kontrollieren, ob eine bestimmte Zeile in den Kopf, Körper oder Fußzeile der Tabelle geht.

auf seine Antwort zu erarbeiten, es scheint, dass Sie dies, indem Sie die TableSection Eigenschaft in Ihrem Markup deklarativ auch erreichen können, ohne Code hinter:

<asp:Table id="yourId" runat="server"> 
    <asp:TableHeaderRow TableSection="TableHeader"> 
     <!-- ... --> 
    </asp:TableHeaderRow> 
    <asp:TableRow> 
     <!-- 'TableSection' defaults to 'TableRowSection.TableBody'. --> 
     <!-- ... --> 
    </asp:TableRow> 
    <asp:TableRow TableSection="TableFooter"> 
     <!-- ... --> 
    </asp:TableRow> 
</asp:Table> 

Original jetzt strittig Antwort folgt:

Sie könnten wa nt die HtmlTable Klasse zu versuchen, statt:

<table id="yourId" runat="server"> 
    <thead> 
     . 
     . 
     . 
    </thead> 
    <tbody> 
     . 
     . 
     . 
    </tbody> 
</table> 
+0

Was gut ist dann diese Asp: Tabelle? Kann ich HtmlTable programmatisch mit C# -Code erstellen? – Primoz

+1

Ja, [Sie können] (http://msdn.microsoft.com/en-us/library/wwhe0at8%28v=VS.80%29.aspx), auch wenn die Syntax wahrscheinlich weniger klar ist. –

+1

aus Neugier, was gut ist dann diese Asp: Tabelle? – Primoz

18

Frédéric Antwort nicht korrekt ist. Asp: Tabelle unterstützt tatsächlich <tbody> und <thead> Tags, aber in einer weniger offensichtlichen Weise als HtmlTable.

UseAccessibleHeader standardmäßig für Tabellen wahr ist, die Ihre Kopfzeilen bedeutet ordnungsgemäß mit <th> statt <td> gemacht werden, aber die <tbody> und <thead>-Tags zu erhalten, haben Sie nur bei Page_Load etwas Voodoo zu setzen und, wenn Sie Erstelle/setze deine Zeilen im Codebehind.

Hier ist mein Beispiel asp: Table Markup:

<asp:Table runat="server" ID="tblGeneral"> 
    <asp:TableHeaderRow ID="TableHeaderRow1" runat="server"> 
     <asp:TableHeaderCell ID="TableHeaderCell1" runat="server">Column 1</asp:TableHeaderCell> 
     <asp:TableHeaderCell ID="TableHeaderCell2" runat="server">Column 2</asp:TableHeaderCell> 
     <asp:TableHeaderCell ID="TableHeaderCell3" runat="server">Column 3</asp:TableHeaderCell> 
     <asp:TableHeaderCell ID="TableHeaderCell4" runat="server">Column 4</asp:TableHeaderCell> 
     <asp:TableHeaderCell ID="TableHeaderCell5" runat="server">Column 5</asp:TableHeaderCell> 
    </asp:TableHeaderRow> 
</asp:Table> 

Bei Page_Load wir fest, dass unsere TableHeaderRow1 ein Tableheader sein sollte:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    TableHeaderRow1.TableSection = TableRowSection.TableHeader  
End Sub 

Und schließlich, in Ihrer Funktion, die Zeilen in die Einsätze Tabelle, müssen Sie nur angeben, dass die TableRowSection jeder Zeile, die Sie hinzufügen, ein TableBody ist:

Sie können mehr lesen auf der TableRowSection property; sieht so aus, als könntest du das auch mit deiner asp: Tabellenvorlage erreichen.

+0

Du hast Recht, ich stehe richtig. Da ich meine Antwort nicht zugunsten Ihrer löschen konnte (akzeptierte Antworten können nicht gelöscht werden), habe ich sie mit den von Ihnen angegebenen Informationen korrigiert. Hoffe, Sie stört es nicht :) –

+2

Kein Problem, immer glücklich, Einblick in die kryptische ASP.NET-Welt zu teilen. ;-) – jfsaliba

+1

Ist es möglich, mehrere tbodies dynamisch zu erstellen? – user1

Verwandte Themen