2009-05-22 3 views
0

<col> </col > 요소에 ASP.Net 테이블 또는 HtmlTable에 equivilent가 있습니까? 전체 열에 스타일이나 클래스를 적용하려면 HTML로 설정합니까? 이상적으로 ASP.Net 디자이너 대신 WebPart에 대해 프로그래밍 방식으로이 작업을 수행하려고합니다.ASP.Net HtmlTable - 모든 동등 물 <col></col>?

답변

0

HtmlTable 당신에게 안부를 제공하는 HtmlGenericControls을 포함 할 수있다 :

var t = new HtmlTable(); 
t.Controls.Add(new HtmlGenericControl("col")); 
+0

은. –

0

http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltable(v=VS.100).aspx을 따르면, <col>은 HtmlTable에서 지원되지 않습니다. 따라서이를 수행하는 유일한 방법은 RenderChildren() 메소드를 덮어 쓰는 것입니다.

Private Class MyHtmlTable 
    Inherits HtmlTable 

    Private _tableDefinitionCells As New ControlCollection(Me) 
    Public ReadOnly Property TableDefinitionCells As ControlCollection 
     Get 
      Return Me._tableDefinitionCells 
     End Get 
    End Property 

    Protected Overrides Sub RenderChildren(ByVal writer As System.Web.UI.HtmlTextWriter) 
     For Each c In Me._tableDefinitionCells.OfType(Of Control)() 
      c.RenderControl(writer) 
     Next 

     MyBase.RenderChildren(writer) 
    End Sub 

End Class 

당신은 다음과 같은

Dim table = New MyHtmlTable() 
table.TableDefinitionCells.Add(New HtmlGenericControl("col")) 
0

를 사용할 수있는 각 열에 대한 <col /> 태그 렌더링 테이블의 서브 클래스 : 그것은 .NET 4에서 작동하지 않습니다

public sealed class ColTable : Table 
{ 
    protected override void RenderContents(HtmlTextWriter writer) 
    { 
     for (int i = 0; i < GetColumnCount(); i++) 
     { 
      writer.RenderBeginTag(HtmlTextWriterTag.Col); 
      writer.RenderEndTag(); 
     } 
     base.RenderContents(writer); 
    } 

    private int GetColumnCount() 
    { 
     int maxCount = 0; 
     foreach (TableRow row in Rows) 
     { 
      int count = 0; 
      foreach (TableCell cell in row.Cells) 
      { 
       count += Math.Max(1, cell.ColumnSpan); 
      } 
      maxCount = Math.Max(count, maxCount); 
     } 
     return maxCount; 
    } 
}