2011-01-18 7 views
1

次のような直感的な操作を行う方法を知っておく必要があります(useGreek()useNato()は負荷またはポストバックごとに1回調べます)。ASP.NET:ラジオボタンのリストアイテムをプログラムで表示/非表示

<asp:radioButtonList id="rbl" runat="server" autoPostBack="true"> 
    <asp:listItem value="alpha" text="Alpha" /> 
    <% if(useGreek()) { %> 
     <asp:listItem value="beta" text="Beta" /> 
     <asp:listItem value="gamma" text="Gamma" /> 
    <% } else if(useNato()) { %> 
     <asp:listItem value="bravo" text="Bravo" /> 
     <asp:listItem value="charlie" text="Charlie" /> 
    <% } %> 
    <asp:listItem value="delta" text="Delta" /> 
</asp:radioButtonList> 

(すでに、私は通常、IISのために書くように求めていないよということは明らかであろう。)

とにかく、ASP.NETは、リスト項目と交互にコードを好きではないので、これはノーであります-go。何とかこれを処理するためのC#ベースの方法がいくつかあると思いますが、私は運がないまま数日間試しています。

さらに、ここではサーバー側の解決策を探しています。私はjQueryに精通していますが、この特定のフォームの処理の大部分をクライアントから引き離そうとしています。

ありがとうございました。

+0

あなたは、現在のコードで何の結果を得ています? – VoodooChild

答えて

2

ませんC#のが、私はあなたは私が何を意味するかを理解すると思う:分離コードのPage_Loadの中

If Not IsPostBack Then 
    Me.rbl.Items.Add(New ListItem("Alpha", "alpha")) 
    If (useGreek()) Then 
     Me.rbl.Items.Add(New ListItem("Beta", "beta")) 
     Me.rbl.Items.Add(New ListItem("Gamma", "gamma")) 
    ElseIf (useNato()) Then 
     Me.rbl.Items.Add(New ListItem("Bravo", "bravo")) 
     Me.rbl.Items.Add(New ListItem("Charlie", "charlie")) 
    End If 
    Me.rbl.Items.Add(New ListItem("Delta", "delta")) 
End If 

状態が速く変化する可能性があるため、あなたがすべてのポストバックをチェックする必要がある場合は、あなたがMe.rbl.Items.Clear()を追加することができますポストバックチェックを削除します。

EDIT: C#

if (!IsPostBack) { 
    this.rbl.Items.Add(new ListItem("Alpha", "alpha")); 
    if ((useGreek())) { 
     this.rbl.Items.Add(new ListItem("Beta", "beta")); 
     this.rbl.Items.Add(new ListItem("Gamma", "gamma")); 
    } else if ((useNato())) { 
     this.rbl.Items.Add(new ListItem("Bravo", "bravo")); 
     this.rbl.Items.Add(new ListItem("Charlie", "charlie")); 
    } 
    this.rbl.Items.Add(new ListItem("Delta", "delta")); 
} 

私はあなたがすでに分離コードモデルを知っているかはわからないので、次のリンクを見て: MSDN: Codebehind and Compilation in ASP.NET 2.0

関連する問題