2017-11-11 146 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”],并重新分配它在回发

相关问题