[英]How to set to select drop down list from back end C# code?
我的頁面上有一個DropDownList
和Button
。
選擇下拉列表並單擊按鈕后,它將重定向到同一頁面,並且必須在下拉列表中顯示我在重定向之前選擇的內容
這是我的代碼
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.