繁体   English   中英

如何设置从后端C#代码中选择下拉列表?

[英]How to set to select drop down list from back end C# code?

我的页面上有一个DropDownListButton

选择下拉列表并单击按钮后,它将重定向到同一页面,并且必须在下拉列表中显示我在重定向之前选择的内容

这是我的代码

 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.一旦我选择222 ,我可以在网址栏中看到如下

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

2.Still下拉列表显示111

3.当我从下拉列表中选择第二次或第三次不同的选项时,它将在URL中显示相同的旧选项222并且下拉列表永远不会更改111

更新

当我在下面的代码中尝试这个时,会抛出System.NullReferenceException

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

它为ReqID返回null。 怎么可能,因为,我传递的参数如"GPApproveCheque.aspx?ReqID="+ddlRequestNo.SelectedItem.Text.ToString()

页面加载函数在接收参数之前执行

您的Page_Load应如下所示,因为您在按钮单击时重定向到页面,因此页面再次加载,您的值分配应在!IsPostback块中完成。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        if(Request.QueryString["ReqID"] != null)
            ddlRequestNo.SelectedValue = Request.QueryString["ReqID"].ToString();
    }
}
<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());

        }

您可以尝试Shah推荐的相同方法,但如果查询字符串导致问题,您可以将其更改为使用ViewState存储下拉列表选择,然后在PageLoad上重新绑定它。

用ViewState [“ReqID”]替换Request.QueryString [“ReqID”]并在回发时重新分配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM