RadioButtonList: OnSelectedIndexChanged не срабатывает - PullRequest
6 голосов
/ 07 июля 2011

У меня есть страница aspx, где я динамически добавляю список радиобуттон с событием OnSelectedIndexChanged.В случае, если я проверяю выбранные предметы.У меня есть 2 предмета.

Для первого элемента событие срабатывает хорошо, однако, если я выберу другую опцию, событие не запускается: под кодом ..

Событие только запускается, если я изменяю с«Некоторые предоставлены» для «Все предоставлено», иначе это не работает

Добавление RBL:

                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;
   }

Любойпомощь и комментарий высоко ценится

Ответы [ 4 ]

5 голосов
/ 26 июля 2012

Это для людей, которые находят этот вопрос в Google:

На RadioButtonList установите для свойства AutoPostBack значение true.

RadioButtonList OnSelectedIndexChanged

2 голосов
/ 02 июля 2013

У меня есть эта проблема, и я решил ее.

Чтобы вызвать выбранное в обмене событие RadioButtonList, отметьте следующие пункты:

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

и в Page_Load установите их с кодом:

     rdlCondition.AutoPostBack = true;
     rdlCondition.SelectedIndexChanged += new EventHandler (rdlCondition_SelectedIndexChanged);
1 голос
/ 07 июля 2011

Глядя на код выше, кажется, много повторного использования кода. Я немного реорганизовал ваш код (при условии, что вы ничего не пропустили). Имейте в виду, я никогда не проверял это.

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;
   }
}

Я знаю, что это не поможет вашей текущей проблеме, но это всего лишь предложение. Если бы вы могли опубликовать код, где вы фактически добавляете значения в список, я мог бы помочь немного больше.

РЕДАКТИРОВАТЬ: Ваша проблема может быть в том, что вы не устанавливаете стоимость своих предметов, только текст. Попробуйте использовать rbl_MinCriteria.SelectedItem.Text =="All provided" вместо.

1 голос
/ 07 июля 2011

Я сделал образец страницы aspx и добавил одну панель в .aspx, как показано ниже:

<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 изменяется.

Так что, боюсь, вы сделали что-то не так в другом месте. Удачи.

...