2011-07-07 11 views
6

私はOnSelectedIndexChangedイベントでradiobuttonlistを動的に追加するaspxページを持っています。イベントで私は選択した項目をチェックします。私は2つの項目があります。RadioButtonList:OnSelectedIndexChangedが起動しない

最初の項目については

、イベントiは、他のオプションを選択するただし場合、イベントが発射されていない、よく発射されます。コードの下に。..

イベントは発火している私は、「一部は提供」からの変更点です

   RadioButtonList dControl_b = new RadioButtonList(); 
       dControl_b.ID = "rbl_MinCriteria"; 
       dControl_b.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal; 
       dControl_b.CssClass = "Font"; 
       dControl_b.Font.Name = "Arial"; 
       dControl_b.Font.Size = 8; 
       dControl_b.ToolTip = ""; 
       dControl_b.SelectedIndex = -1; 
       dControl_b.SelectedIndexChanged += new EventHandler(rbl_MinCriteria_SelectedIndexChanged); 
       dControl_b.AutoPostBack = true; 

選択した項目のチェック:

if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = true; 
     cbl_MinimumCriteria.Items[1].Selected = true; 
     cbl_MinimumCriteria.Items[2].Selected = true; 
     cbl_MinimumCriteria.Items[3].Selected = true; 
     cbl_MinimumCriteria.Enabled = false; 

     //************************************************************* 
     if (ddl_CountryOccurence.SelectedValue != "Please choose") 
     { 
      ddl_CountryOccurence.Enabled = false; 
     } 
     else 
     { 
      ddl_CountryOccurence.Enabled = true; 
     } 

     //************************************************************* 
     if (tb_DueDate.Text != "") 
     { 
      tb_DueDate.Enabled = false; 
     } 
     else 
     { 
      tb_DueDate.Enabled = true; 
     } 

     OtherControlI.Enabled = false; 
     OtherControlII.Enabled = false; 
     OtherControlIII.Enabled = false; 
    } 
    if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = false; 
     cbl_MinimumCriteria.Items[1].Selected = false; 
     cbl_MinimumCriteria.Items[2].Selected = false; 
     cbl_MinimumCriteria.Items[3].Selected = false; 
     cbl_MinimumCriteria.Enabled = true; 

     //************************************************************* 
     if (ddl_CountryOccurence.SelectedValue != "Please choose") 
     { 
      ddl_CountryOccurence.Enabled = false; 
     } 
     else 
     { 
      ddl_CountryOccurence.Enabled = true; 
     } 

     //************************************************************* 
     if (tb_DueDate.Text != "") 
     { 
      tb_DueDate.Enabled = false; 
     } 
     else 
     { 
      tb_DueDate.Enabled = true; 
     } 

     OtherControlI.Enabled = false; 
     OtherControlI.SelectedIndex = -1; 
     OtherControlII.Enabled = false; 
     OtherControlII.SelectedIndex = -1; 
     OtherControlIII.Enabled = false; 
     OtherControlIII.SelectedIndex = -1; 
    } 
"をすべて提供された" 他の方法には、RBLを追加

が動作していません

すべてのヘルプやコメントがずっと

+1

 <asp:RadioButtonList ID="rdlCondition" runat="server" AutoPostBack="True" onselectedindexchanged="rdlCondition_SelectedIndexChanged"> 

とPage_Loadの中には、コードでそれらを設定します値。 RadioButtonListに項目を追加するコードを投稿できますか? –

+0

下記の私の答えを参照してください。私はそれを少し遅らせたが、この結果はGoogleで高いので、助けになると思った。 – trgraglia

答えて

1

を高く評価され、私はサンプルaspxページ作られ、以下のように.aspxに1枚のパネルを追加しました:

<asp:Panel ID="Panel1" runat="server"></asp:Panel> 

そして、背後にあるコードでは、私は次のコードを追加しました:

protected void Page_Load(object sender, EventArgs e) 
    { 
     RadioButtonList dControl_b = new RadioButtonList(); 
     dControl_b.ID = "rbl_MinCriteria"; 
     dControl_b.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal; 
     dControl_b.CssClass = "Font"; 
     dControl_b.Font.Name = "Arial"; 
     dControl_b.Font.Size = 8; 
     dControl_b.ToolTip = ""; 
     dControl_b.SelectedIndex = -1; 
     dControl_b.SelectedIndexChanged += new   EventHandler(rbl_MinCriteria_SelectedIndexChanged); 
     dControl_b.AutoPostBack = true; 

     dControl_b.Items.Add(new ListItem("All provided")); 
     dControl_b.Items.Add(new ListItem("Some provided")); 

     Panel1.Controls.Add(dControl_b); 
    } 
    protected void rbl_MinCriteria_SelectedIndexChanged(object sender,EventArgs e) 
    { 
     RadioButtonList rbl_MinCriteria = (RadioButtonList)Panel1.FindControl("rbl_MinCriteria"); 
     if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
     { 

     } 
     if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
     { 

     } 

    } 

イベントは、ラジオボタンlistitemが変更されるたびに発射されます。

だから、私は恐れています。他の場所で何か間違ったことをしています。がんばろう。

+0

こんにちはBikash、コードと鉱山の唯一の違いは、私は別の機能でコントロールを作成することです。しかし、この関数はページロードイベントでも呼び出されます。なぜ私は単純に「すべて提供された」を選択した場合にイベントが発生している理由を理解できませんが、「提供されたもの」を選択した場合はイベントが選択されたアイテムではなくコントロールに統合されます – Yann

+0

こんにちはヤン、 ?そうでない場合は、新しいWebサイトを作成して試してください。コードをコードビハインドに貼り付け、各if文にブレークポイントを置き、そこにヒットするかどうかを確認するだけです。私はそれがすべてのイベントの火に当たると確信しています。この方法では、問題は他の場所にあることがわかります。その後、コードスニペットを追加してもう一度やり直してください。それともあなたのコードを私に送ってください。 – Bikee

1

上記のコードを見ると、コードの再利用が多いようです。私はコードを少し再編成しました(あなたが何も残していないと仮定して)。私は決してそれをテストしなかったことに留意してください。

protected void rbl_MinCriteria_SelectedIndexChanged(object sender,EventArgs e) 
{ 
    if (rbl_MinCriteria.SelectedIndex<0) return; //If nothing is selected then do nothing 

     OtherControlI.Enabled = false; 
     OtherControlII.Enabled = false; 
     OtherControlIII.Enabled = false; 
    if(rbl_MinCriteria.SelectedItem.ToString() == "All provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = true; 
     cbl_MinimumCriteria.Items[1].Selected = true; 
     cbl_MinimumCriteria.Items[2].Selected = true; 
     cbl_MinimumCriteria.Items[3].Selected = true; 
     cbl_MinimumCriteria.Enabled = false; 

    } 
    if (rbl_MinCriteria.SelectedItem.ToString() == "Some provided") 
    { 
     cbl_MinimumCriteria.Items[0].Selected = false; 
     cbl_MinimumCriteria.Items[1].Selected = false; 
     cbl_MinimumCriteria.Items[2].Selected = false; 
     cbl_MinimumCriteria.Items[3].Selected = false; 
     cbl_MinimumCriteria.Enabled = true; 

     OtherControlI.SelectedIndex = -1; 
     OtherControlII.SelectedIndex = -1; 
     OtherControlIII.SelectedIndex = -1; 
    } 

    //************************************************************* 
    if (ddl_CountryOccurence.SelectedValue != "Please choose") 
    { 
     ddl_CountryOccurence.Enabled = false; 
    } 
    else 
    { 
     ddl_CountryOccurence.Enabled = true; 
    } 
    //************************************************************* 
    if (tb_DueDate.Text != "") 
    { 
    tb_DueDate.Enabled = false; 
    } 
    else 
    { 
     tb_DueDate.Enabled = true; 
    } 
} 

これはあなたの現在の問題に役立つわけではありませんが、これは単なる提案です。実際に値をリストに追加するコードを投稿すれば、もう少しお手伝いできます。

EDIT:あなたの問題は、あなたのアイテムの価値を設定するのではなく、テキストのみを設定することです。代わりにrbl_MinCriteria.SelectedItem.Text =="All provided"を使用してください。 RadioButtonList

trueAutoPostBackプロパティを設定:Googleからのこの質問を見つける人々が

+0

私は断続的にリスト項目に値を追加しました。しかし、それはまだ動作していません!私も最初から完全に起動し、リストを作成するコードを削除し、最初から書きました。まだ同じ問題 – Yann

+0

@ Yann、SelectedItem.Textを使ってみましたか?どのようにリストに項目を追加していますか?あなたはコードを投稿できますか? – Gage

+0

これはアイテムを追加する方法です:ListItem a = new ListItem(); a.Value = "すべて提供されました"; a.Text = "すべて提供されました"; ListItem b =新しいListItem(); b.Value = "いくつか提供されました"; b.Text = "いくつか提供されました";そして、私はSelectedItemsとselectedValueの両方を試しました。 dControl_b.Items.Add(a); dControl_b.Items.Add(b); – Yann

2

私はこの問題を持っており、それを解決しました。 RadioButtonListののonselectedindexchangedイベントを上げるための

は、以下の項目をチェック:私はあなたが同じでRadioButtonListのにあなたのオプションを追加していると思われる

 rdlCondition.AutoPostBack = true; 
    rdlCondition.SelectedIndexChanged += new EventHandler (rdlCondition_SelectedIndexChanged);