2011-11-10 35 views
0

如何在ASP.NET 3.5中將表格自動調整爲內容大小(例如,使用足以顯示內部控件的最小大小)?Asp.Net - 表格內容的大小

我有一個有幾行的表。某些行並不總是需要顯示(例如,當該行中的所有控件都被隱藏時)。我想要隱藏這些行(或大小= 0),從而使表變小。

回答

0

不知道您的確切設置,很難給出具體的答案來滿足您的需求。如果表格行顯示在頁面上,除非關閉它,否則它將佔用至少一行。一種方法是將錶行設置爲runat =「server」,然後在代碼後面設置visible =「false」,如果內部控件不顯示。

<tr id="tr" runat="server"> 
<td>Controls</td> 
</tr> 

在你的後臺代碼:

if(ControlsNotShowing) 
    tr.Visible = false; 
+0

我希望有一個更簡單的方法做到這一點,沒有我手動檢查控制可見性。這是一個常規的asp.net web項目(VS的項目模板之一)。 – ace

+0

@ace我相信你可以把一個遞歸函數放在一起來檢查表格單元格或行內控件的可見性,還有一些例子可以做到這一點。否則,您可能需要查看客戶端選項。 –

+0

是的,遞歸函數會起作用。通過「手動」,我的意思是需要編寫代碼來檢查可見性。無論如何,我來自「桌面應用程序」世界(winforms,wpf),所以一直在尋找類似TableLayoutPanel的東西,這似乎並不存在。 – ace

0

您可能需要提供更多的細節,但我會在它採取刺傷。

如果您未指定表格和td單元格的寬度屬性,表格會自動調整其內容的大小。所以這是很容易的部分。

有關顯示或隱藏行的問題可能需要更多的細節。如果你想顯示從後面的代碼/服務器端/隱藏,可以使該行服務器控件,並設置其Visible屬性:

<tr runat="server" id="row1"> 
<td>Hi</td> 
</tr> 

然後在後面的代碼,將Visible屬性設置

row1.Visible = false 

如果你想隱藏客戶端的行,你可以使用JavaScript。我會把它留給你或另一個問題,但是,如果你確實使用javascript隱藏了一行,那麼如果刪除的行有最寬的內容,表格會自動調整大小。