我有2个下拉列表(ddl1,ddl2)和一个带有2个下拉列表的网格视图(gddl1,gddl2)。在ddl1的SelectedIndexChanged
事件中,我在回发中更改了gddl1的SelectedIndex
。
我的问题是 ddl1.databind()出现在按钮的单击事件。因此,一旦ddl1的selectedindex发生变化,所选值就会丢失并返回初始值。
我无法使用!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;
}
}
答案 0 :(得分:1)
这里的问题是同步及其获取位置和绑定位置,但您也可以使用Request.Form
直接获取值。
Request.Form[DropDownListID.UniqueID]
答案 1 :(得分:0)
我不确定我是否理解您的问题,因为很难看到ddl1
,ddl2
,gddl1
等等以及何时处理每个事件。
但我的猜测是:
btnProceed_Click
然后根据所选的ddl1
答案 2 :(得分:0)
你可以通过将它们作为属性存储在viewstate中来保留ddl1和ddl2选择的索引。
private string ddlSelectedIndex
{
set { ViewState["SelectedIndex"] = value; }
get { return ViewState["SelectedIndex"] == null ? string.Empty : ViewState["SelectedIndex"].ToString(); }
}
上面的属性是字符串,你可以用类似的方式创建一个int属性,或者使用与string相同的转换索引。您选择的索引将在后续回发中保留。