2017-11-11 127 views
1

我的頁面上有一個DropDownListButton如何設置從後端C#代碼中選擇下拉列表?

我選擇下拉列表,點擊該按鈕後,它會重定向到同一頁,並且它在下拉列表顯示我的選擇之前重定向

這裏是我的代碼

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
      //ASPxGridView1.Visible = false; 
     } 
     else 
     { 
      if(Request.QueryString["ReqID"] != null) 
       ddlRequestNo.SelectedValue = Request.QueryString["ReqID"].ToString(); 
     } 
    } 

    protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("GPApproveCheque.aspx?ReqID="+ddlRequestNo.SelectedItem.Text.ToString()); 
    } 

當我請參閱網址,它顯示什麼是對首次

例如選擇

在我的下拉列表中,如果我有值

111 
222 
333 
444 

1.一旦我選擇,我可以在地址欄看到如下

http://localhost:55047/GPApproveCheque.aspx?ReqID=222 

2.Still下拉列表中顯示111

3.當我選擇第二或第三次從下拉列表中選擇不同的選項,它會在網址中顯示相同的舊和下拉列表不會改變

更新

當我嘗試這下面的代碼,它拋出System.NullReferenceException

ddlRequestNo.SelectedIndex = ddlRequestNo.Items.IndexOf(ddlRequestNo.Items.FindByText(Request.QueryString["ReqID"].ToString())); 

它爲ReqID返回null。它是如何可能的,因爲,我傳遞的參數一樣"GPApproveCheque.aspx?ReqID="+ddlRequestNo.SelectedItem.Text.ToString()

頁面加載函數執行它接收參數

回答

3

你的Page_Load應該是如下因爲你重定向到頁面上點擊按鈕等頁面再次加載,你的值分配應該在!IsPostback塊中完成。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     if(Request.QueryString["ReqID"] != null) 
      ddlRequestNo.SelectedValue = Request.QueryString["ReqID"].ToString(); 
    } 
} 
0
<asp:DropDownList runat="server" ID="ddlRequestNo" AutoPostBack="true"> 
     <asp:ListItem Text="111" /> 
     <asp:ListItem Text="222" /> 
     <asp:ListItem Text="333" /> 
     <asp:ListItem Text="444" /> 
</asp:DropDownList> 
protected void Page_Load(object sender, EventArgs e) 
     { 
      ddlRequestNo.SelectedIndexChanged += DdlRequestNo_SelectedIndexChanged; 
     } 
private void DdlRequestNo_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri+ "?ReqID=" + ddlRequestNo.SelectedItem.Text.ToString()); 
     } 
protected void btnSearch_Click(object sender, EventArgs e) 
{ 
      ddlRequestNo.SelectedIndex = ddlRequestNo.Items.IndexOf(ddlRequestNo.Items.FindByText(Request.QueryString["ReqID"].ToString())); 
    Response.Redirect("GPApproveCheque.aspx?ReqID="+ddlRequestNo.SelectedItem.Text.ToString()); 

     } 
+0

它拋出nullreference異常兄弟 –

+0

我有更新代碼,請驗證 –

0

您可以嘗試Shah還建議同樣的方法,但如果查詢字符串導致一個問題,你可以把它改成使用ViewState中存儲的下拉列表中選擇,然後重新綁定在pageLoad的。

用的ViewState [「REQID」】替換的Request.QueryString [「REQID」],並重新分配它在回發