2010-10-25 48 views

Trả lời

24

asp:Table không hỗ trợ các yếu tố này.

Cập nhật: Như jameh's answer tiết lộ, câu trên là hoàn toàn sai: các TableSection sở hữu cho phép để kiểm soát dù liên tiếp đưa đi vào của bảng tiêu đề, cơ thể hoặc chân.

Để xây dựng trên câu trả lời của mình, có vẻ như bạn thậm chí có thể đạt được điều này khai báo bằng cách thiết lập TableSection tài sản trong đánh dấu của bạn, mà không cần mã sau:

<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> 

gốc, bây giờ tranh luận trả lời sau:

Bạn có thể đợi nt thử lớp HtmlTable thay vì: Câu trả lời

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

Điều gì tốt sau đó Asp này: Bảng? Tôi có thể tạo lập trình HtmlTable với mã C# không? – Primoz

+1

Có, [bạn có thể] (http://msdn.microsoft.com/en-us/library/wwhe0at8%28v=VS.80%29.aspx), ngay cả khi cú pháp có thể ít rõ ràng hơn. –

+1

Trong sự tò mò, những gì tốt là sau đó Asp này: Bảng? – Primoz

18

Frédéric là không chính xác. asp: Bảng DOES thực tế hỗ trợ các thẻ <tbody><thead>, nhưng trong thời trang ít rõ ràng hơn HtmlTable.

UseAccessibleHeader là đúng theo mặc định cho các bảng, có nghĩa là hàng tiêu đề của bạn sẽ được trả lại đúng với <th> thay vì <td>, nhưng để có được những <tbody><thead> thẻ, bạn vừa phải thiết lập một số voodoo tại Page_Load và khi bạn đang tạo/chèn các hàng của bạn trong codebehind.

Dưới đây là ví dụ asp của tôi: đánh dấu Bảng:

<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> 

Tại Page_Load, chúng tôi xác định rằng TableHeaderRow1 của chúng tôi phải là một TableHeader:

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

Và cuối cùng, trong chức năng của bạn mà chèn hàng vào nói bảng, bạn chỉ cần xác định rằng TableRowSection của mỗi hàng bạn thêm là một TableBody:

Dim row As TableRow 
Dim dvRow As Data.DataRowView 

For Each dvRow In dv 
    row = New TableRow 
    row.TableSection = TableRowSection.TableBody 'THIS is the important bit 
    cell = New TableCell 
    Col1Stuff = New Label 
    Col1Stuff.Text = "Blah" 
    cell.Controls.Add(Col1Stuff) 
    row.Cells.Add(cell) 

    ... 

tblGeneral.Rows.Add(row) 
Next 

Bạn có thể đọc thêm trên TableRowSection property; có vẻ như bạn cũng có thể thực hiện điều này với asp của bạn: Bảng mẫu.

+0

Bạn nói đúng, tôi đã sửa chữa. Vì tôi không thể xóa câu trả lời của tôi có lợi cho bạn (câu trả lời được chấp nhận không thể bị xóa), tôi đã sửa nó bằng thông tin bạn đã cung cấp. Hy vọng bạn không nhớ :) –

+2

Không có vấn đề, luôn luôn hạnh phúc để chia sẻ cái nhìn sâu sắc vào thế giới ASP.NET khó hiểu. ;-) – jfsaliba

+1

Có thể tạo nhiều tbodies động không? – user1

Các vấn đề liên quan