簡體   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