2

HTML行(またはテーブル)のレンダリングをブロックせずに非表示にする方法を見つける必要があります。this.myTable.Visible = falseを設定すると、ユーザーからテーブルを非表示にする最も簡単な方法のように見えますが、HTMLテーブルがブラウザーに送信されなくなり、バリデーターを使用しているため、問題が発生します。非表示の要素が検証されます(ページナビゲーションロジックのため、一度に一部の要素のみがユーザーに表示されます)。

Styleプロパティを変更しようとしましたが、asp.netは読み取り専用であると言っているため、CSSを使用して非表示にすることはできません。また、私はJavascriptを使用したくないのですが、JSを使用した簡単な解決策があれば問題ありません。

どんな助けでも大歓迎です。

4

6 に答える 6

3

このサーバー側は、スタイルコレクションにdisplayプロパティを追加することで設定できます。スタイルコレクションプロパティ自体は読み取り専用です(置き換えることはできません)が、そのスタイルプロパティの設定を反映するように要素を追加することができます。

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

また

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

StyleコレクションはHtmlGenericControlから継承されるため、同じことがテーブル行にも当てはまります。

編集:これを機能させるには、HTMLコントロールをrunat = "server"にする必要があります。これは、Visibleプロパティを設定できるためです。

于 2009-01-13T20:41:06.430 に答える
3

<tr>sサーバータグを作成できます。これを行うには、行を変更します

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

rowID.styleしたがって、またはプロパティなどのプロパティにアクセスできますclass

于 2009-01-13T20:41:24.323 に答える
2

テーブル全体を非表示にするには(ただし、クライアントにレンダリングするには)、style = "display:none"を使用してdivでラップします。

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

ただし、単一行の場合、これは機能しません。おそらく、JavaScriptを使用する必要があります(別のユーザーが推奨するように、jqueryなど)。

于 2009-01-13T20:40:20.177 に答える
0

styleプロパティを使用する以外に、タグ自体の右側、またはを介してコードで、いつでも要素にスタイルを配置できますelement.Attributes["style"] = "display: none;";runat="server"コードでそれを行うには、IDを追加して設定することにより、それらをサーバーコントロールにする必要があります。

于 2009-01-13T20:45:43.440 に答える
0

みんなでも table.Visible = False は、もちろんテーブルに runat= "server" を設定した場合に機能します

于 2009-09-16T13:04:31.253 に答える
0

有益な情報をありがとう。以前の回答のうちの 2 つを実際に組み合わせて、優れたソリューションを考え出すことができました。参考までに以下です。

次のように、表示および非表示にしたいテーブルの周りに div タグを使用しました。

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

これらをコード ビハインドで次のように参照しました。

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

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

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

これにより、テーブルが非表示のときにページの空白スペースを占有することなく、テーブルを表示または非表示にすることができますが、非表示または表示中に検証コントロール (これが私の最終的な目標でした) で動作するようにレンダリングされます。定義中のスタイルタグは必要ないかもしれませんが、今のままで動くので、実行時に変更されるのでそのままにしておこうと思います。

再び洞察をありがとう!!

于 2009-01-13T22:03:40.583 に答える