2009-01-13 72 views
2

我需要找到一種方法來從視圖中隱藏HTML行(或表),而不會阻止它們呈現。設置this.myTable.Visible = false似乎是向用戶隱藏表格的最簡單方法,但它阻止了HTML表格被髮送到瀏覽器,並導致一個問題,因爲我正在使用驗證器並需要確保驗證不可見元素(因爲頁面導航邏輯,一次只有一些元素會對用戶可見)。ASP.NET 2.0 HtmlTable行 - 隱藏不隱形

我試圖改變Style屬性,但asp.net說它是隻讀的,所以我不能使用CSS隱藏它。此外,我寧願不使用Javascript,但如果有一個簡單的JS解決方案,那很好。

任何幫助,非常感謝。

回答

2

要隱藏一個完整的表(但仍呈現到客戶端),在風格=一個div包裝它「顯示:無」:

<div style="display:none;"> 
asp.net table goes here 
</div> 

雖然,單排,這是行不通。您可能需要使用一些javascript(例如jquery,如推薦的其他用戶)。

3

您可以通過將顯示屬性添加到樣式集合來設置此服務器端。樣式集合屬性本身是隻讀的(不能替換它),但是您可以通過一個元素來反映設置該樣式屬性。

table.Style.Add("display","none") 

table.Style["display"] = "none"; 

的樣式集是從HtmlGenericControl繼承這同樣適用於錶行真。

編輯:HTML控件需要runat =「server」才能正常工作,我假設你是因爲你可以設置Visible屬性。

3

您可以使您的<tr> s 服務器標籤。要做到這一點,改變你的行中

<tr id="rowID" runat="server"> 

所以,你可以訪問他們的屬性,如rowID.styleclass性能。

0

除了使用樣式屬性外,您始終可以將樣式放置在元素上的元素上,或者通過element.Attributes["style"] = "display: none;";將其放置在元素上。要在代碼中執行此操作,您需要通過添加runat="server"並設置ID來使其成爲服務器控件。

0

感謝您的有用信息傢伙。我實際上可以結合兩個較早的答案來提出一個很好的解決方案。僅供參考這裏是:

我用的桌子周圍div標籤,我想顯示和隱藏,如:

Definition: 
    protected System.Web.UI.HtmlControls.HtmlGenericControl tblHideItems1; 

To show: 
this.tblHideItems1.Style.Add("display", "inline"); 

To hide: 
this.tblHideItems1.Style.Add("display", "none"); 

<div style="display:none;" id="tblHideItems1" runat="server"> 

我在代碼中隱藏這樣引用這些這使我可以顯示或隱藏表格,而不會在頁面被隱藏時佔用空白區域,但仍可渲染它們,以便在隱藏或顯示時使用驗證控件(這是我的最終目標)。 定義中的樣式標記可能不是必需的,但由於它現在可以正常工作,因此可能會在運行時修改它,所以我可能會將其保留。

再次感謝您的洞察!

0

人甚至table.Visible =假作品 提供 u've設定爲表RUNAT =「服務器」 ofcourse

+0

的[Control.Visible屬性] [1]確定控制是否應該被髮送到HTML渲染引擎。如果你設置table.Visible = false,那麼表格將不會通過ASP.NET渲染,不會通過IIS,並且不會傳遞給最終用戶。 n2009需要最終用戶爲驗證器獲取表格。 Style =「display:none」將進入瀏覽器渲染引擎。 – 2013-01-31 22:41:08