2011-01-23 55 views
2

我有一個帶有radiobuttonlist和textarea的頁面。數據會根據用戶的選擇在textarea內動態顯示。我還設置了一個OnSelectedIndexChanged =「RadioButtonList1_SelectedIndexChanged」來創建一個允許用戶引用他們的文章(單選按鈕選擇)的url。方法將不會正確地爲選擇索引賦值,asp.net radiobuttonlist

除了剪切和粘貼創建的網址(即http://test.com/test.aspx?selected=3)到一個新的瀏覽器之外,一切都可以使用。該代碼始終將radiobuttonlist1.selectedindex分配給-1。

所以這裏是我所看到的在調試模式

案例1當我切過去,以新的瀏覽器http://test.com/test.aspx?selected=1的URL,在Page_Load方法代碼RadioButtonList1.SelectedIndex的結束等於= -1。由於某種原因,它'沒有正確分配選擇索引。

案例2當我選擇網頁我發起內的單選按鈕,它會跳過在Page_Load代碼,因爲後回是真的。然後在RadioButtonList1_SelectedIndexChanged中創建一個url。然後運行頁面加載方法並在最後保持正確的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項目?我試圖重現這一點,我不能:( – 2011-01-25 19:21:02

回答

0

我的會話參數沒有在SqlDataSource1_Selecting上取得正確的值。我刪除了代碼,並在aspx中硬編碼會話參數,以使我的代碼正常工作。感謝大家的意見!我很高興這一結束。

9

您需要將呼叫轉向第一個數據綁定radiobuttonlist,然後設置選定的索引。例如,您可以重組爲以下內容。如果你需要綁定數據,你可以把它放在我有評論的地方。

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

這是沒有幫助 – 2011-01-31 15:28:03