Dropdownlist回发中的选定值
本文关键字:Dropdownlist | 更新日期: 2023-09-27 18:24:53
我有两个下拉列表(ddl1,ddl2)和一个带有两个下拉名单的网格视图(gddl1,gddl2)。在ddl1的SelectedIndexChanged
事件上,am在回发中更改gddl1的SelectedIndex
。
我的问题是ddl1.databind()发生在按钮的单击事件处。因此,一旦ddl1的选定索引发生变化,选定的值就会丢失并返回到初始值。
我不能使用!IsPostback
,因为我在按钮单击时绑定ddl1。如何保留ddl1和ddl2选定的索引。?
protected void btnProceed_Click(object sender, EventArgs e)
{
if(ddlLocation.SelectedIndex > -1) {
empDS = ws_service.GetEmpList(ddlLocation.SelectedValue, ((ddlDept.SelectedValue == "All") ? "" : ddlDept.SelectedValue), ((ddlGrade.SelectedValue == "All") ? "" : ddlGrade.SelectedValue));
appraiserDS = ws_service.GetAppList();
grdDetails.DataSource = empDS.Tables[ 0 ].DefaultView;
grdDetails.DataBind();
ddlAppraiserAll.DataSource = appraiserDS.Tables[ 0 ].DefaultView;
ddlAppraiserAll.DataTextField = "APPRAISER_NAME";
ddlAppraiserAll.DataValueField = "APPRAISER_ID";
ddlAppraiserAll.DataBind();
}
}
protected void ddlAppraiserAll_SelectedIndexChanged(object sender, EventArgs e)
{
foreach(GridViewRow gvRow in grdDetails.Rows) {
Control ctrl = gvRow.FindControl("ddlAppraiserId");
DropDownList ddl = ctrl as DropDownList;
if(ddl != null)
ddl.SelectedIndex = ddlAppraiserAll.SelectedIndex;
}
}
这里的问题是同步及其获取位置和绑定位置,但您也可以使用Request.Form
直接获取值。
Request.Form[DropDownListID.UniqueID]
我不确定我是否理解您的问题,因为很难看到ddl1
、ddl2
、gddl1
等是什么,以及每个事件的处理时间。
但我的猜测是:
- 数据绑定
btnProceed_Click
中的GridView - 仅在RowDataBound中绑定GridView的两个DropDownList
然后,根据ddl1
的选定值,您的"GridView DropDownLists"始终是最新的
您可以通过将ddl1和ddl2所选索引作为属性存储在视图状态中来保留它们。
private string ddlSelectedIndex
{
set { ViewState["SelectedIndex"] = value; }
get { return ViewState["SelectedIndex"] == null ? string.Empty : ViewState["SelectedIndex"].ToString(); }
}
上面的属性在字符串中,您可以以类似的方式创建int属性,也可以使用与字符串相同的并强制转换索引。您选择的索引将在后续回发时保留。