2011-01-23 6 views
2

У меня есть страница с радиообъективом и текстовым полем. данные отображаются динамически в текстовом поле на основе выбора пользователя. Я также создал OnSelectedIndexChanged = "RadioButtonList1_SelectedIndexChanged", чтобы создать URL-адрес, который позволит пользователям ссылаться на свою статью (выбор переключателя).метод не будет правильно присваивать значение selectindex, asp.net radiobuttonlist

все работает, за исключением резки и вставки созданного URL-адреса (то есть http://test.com/test.aspx?selected=3) в новый браузер. код продолжает присваивать radobuttonlist1.selectedindex -1.

так вот что я вижу в режиме отладки

Случай 1 когда я вырезать и мимо URL в новый браузер http://test.com/test.aspx?selected=1, в конце Page_Load кода метод RadioButtonList1.SelectedIndex равен = -1. по какой-то причине он «неправильно назначает selectindex.

Случай 2 когда я выбрать радиокнопку в веб-страницы, я запущен, он пропускает код Page_Load потому что пост обратно верно. затем создает URL-адрес в RadioButtonList1_SelectedIndexChanged. затем запускается метод загрузки на странице и удерживает правильное значение RadioButtonList1.SelectedIndex в конце.

Случай 3 когда я выбрать ссылку в веб-страницы запущен, который использует указывая на http://test.com/test.aspx?selected=2, постбэк является ложным, так что петли, хотя код page_load и успешно удерживать правильное значение RadioButtonList1.SelectedIndex в конце.

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
       { 

       int selected; 

       if (Request.QueryString["selected"] != null) 
       { 

        if (int.TryParse(Request.QueryString["selected"], out selected)) 
        { 


         RadioButtonList1.SelectedIndex = selected; 
         RadioButtonList1.DataBind(); 

        } 


       } 
       else 
       { 

        int firstart = 0;  

        RadioButtonList1.SelectedIndex = firstart; 


       } 

      } 



     } 



    protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 



    } 
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     try{ 
     e.Command.Parameters["@URL_FK"].Value = Session["URL_PK"]; 


     } 
    catch (Exception ex) 
    { 

    } 


    } 


    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 


      string strRedirect; 
      strRedirect = "test.aspx?selected=" + RadioButtonList1.SelectedIndex; 
      Response.Redirect(strRedirect); 

    } 


} 
+0

Не могли бы вы опубликовать упрощенный проект ASP.NET с таким поведением? Я попытался воспроизвести это, и я не могу :( –

ответ

0

Мой параметр сеанса не принимал правильное значение в SqlDataSource1_Selecting. я удалил код, который и жестко закодировал параметр сеанса в aspx, чтобы корректно работать с моим кодом. спасибо за вклад каждого! Я рад, что все закончилось.

9

Вам необходимо обратить вспять вызовы на первую базу данных радиобарабана, затем установить выбранный индекс.

Например, вы можете перестроить следующее. Если вам нужно привязать данные, вы можете поместить его там, где у меня есть комментарий.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //Always bind the list to here, if needed 

     if (Request.QueryString["selected"] != null) 
     { 
      int selected; 
      if (int.TryParse(Request.QueryString["selected"], out selected)) 
      { 
       RadioButtonList1.SelectedIndex = selected; 

      } 
     } 
    } 
} 

Примечание: я настоятельно рекомендую чистки это немного дальше, если пользователь передает «SelectedIndex», то есть больше, то данные, которые вы получите исключение с кодом выше.

+0

Это не помогло. –

+0

Этот ответ кажется правильным - привязка после установки SelectedIndex сбрасывает SelectedIndex. Что нам не хватает? – RQDQ

+0

@MG Если вы установили точка останова на строке «RadioButtonList1.SelectedIndex = selected;» и посмотреть на свойство Items списка переключателей, содержит ли коллекция что-нибудь? –

 Смежные вопросы

  • Нет связанных вопросов^_^