2011-07-07 25 views
6

Tengo una página aspx donde agrego dinámicamente una lista de botones de radio con el evento OnSelectedIndexChanged. En caso de que compruebe los elementos seleccionados. tengo 2 artículosRadioButtonList: OnSelectedIndexChanged no dispara

para el primer artículo, el evento está disparando así, pero si elijo la otra opción que el evento no está disparando: debajo del código ..

El evento sólo está disparando es que cambio de "Algunos proporcionado" a "Todos los incluidos" para otro lado que no está funcionando

Adición de la 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; 

Comprobación del elemento seleccionado:

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

Cualquier ayuda y comentario se aprecia mucho

+1

sospecho que va a agregar sus opciones para RadioButtonList con el mismo valores. ¿Puedes publicar el código que agrega elementos a RadioButtonList? –

+0

Ver mi respuesta a continuación.Lo agregué un poco tarde, pero este resultado es alto en Google, así que pensé que sería útil. – trgraglia

Respuesta

1

he hecho una página de muestra aspx, y ha añadido un panel en .aspx, como a continuación:

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

y en el código siguiente código detrás, he añadido :

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") 
     { 

     } 

    } 

el evento está disparando cada vez que se cambia el botón de radio listitem.

Por lo tanto, me temo que ha hecho algo mal en otro lado. Buena suerte.

+0

Hola Bikash, la única diferencia entre tu código y el mío es que creo el control en una función separada. Pero esta función también se llama en el evento de carga de página. Lo que simplemente no entiendo por qué el evento se activa si elijo "todo provisto" pero no si elijo "algo proporcionado" el evento está correlacionado con un control, y no con el elemento seleccionado – Yann

+0

Hola Yann, ¿has ejecutado mi código? ? Si no, inténtalo creando un nuevo sitio web. Solo pegue mi código en código subyacente, coloque puntos de corte en cada declaración if y vea si golpea allí o no. Estoy seguro de que golpeará en cada evento de fuego. De esta manera, encontrarás que el problema está en otra parte. A continuación, agregue más fragmentos de código y vuelva a intentarlo. O bien, envíame tu código. – Bikee

1

Mirando el código de arriba parece que hay una gran cantidad de código de reutilización. Reorganicé un poco tu código (asumiendo que no dejaste nada). Tenga en cuenta que nunca lo probé.

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

Sé que esto no ayuda a su problema actual, pero esto es solo una sugerencia. Si pudieras publicar el código donde realmente agregas los valores a la lista, podría ayudarte un poco más.

EDIT: Su problema podría ser que no establezca el valor de sus elementos, solo el texto. Intenta usar rbl_MinCriteria.SelectedItem.Text =="All provided" en su lugar.

+0

Agregué valores de forma intermitente a los elementos de la lista. ¡Pero todavía no está funcionando! También comencé completamente desde cero, borré el código para crear la lista y la escribí desde el principio. Sigue el mismo problema – Yann

+0

@Yann, ¿Intentó utilizar SelectedItem.Text? ¿Cómo está agregando elementos a la lista? ¿Puedes publicar el código? – Gage

+0

así es como agrego los elementos: ListItem a = new ListItem(); a.Value = "Todo provisto"; a.Text = "Todo provisto"; ListItem b = new ListItem(); b.Value = "Algunos proporcionados"; b.Text = "Algunos proporcionados"; Y probé ambos, SelectedItems Y selectedValue dControl_b.Items.Add (a); dControl_b.Items.Add (b); – Yann

2

que tienen este problema y lo resolvió.

Para evento de recaudación de OnSelectedIndexChanged de RadioButtonList, compruebe debajo de artículos:

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

y en el Page_Load las puso con código:

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