C# Dropdownlist回发中的选定值
我有两个下拉列表(ddl1,ddl2)和一个带有两个下拉列表(gddl1,gddl2)的gridview。在回发中gddl1的ddl1 am更改C# Dropdownlist回发中的选定值,c#,asp.net,C#,Asp.net,我有两个下拉列表(ddl1,ddl2)和一个带有两个下拉列表(gddl1,gddl2)的gridview。在回发中gddl1的ddl1 am更改SelectedIndex事件上 我的问题是 ddl1.databind()发生在按钮的单击事件中。因此,一旦ddl1的selectedindex发生更改,所选值将丢失并返回初始值 我不能用!iPostback因为单击按钮时am绑定ddl1。 如何保留ddl1和ddl2所选索引 protected void btnProceed_Click(object
SelectedIndex
事件上
我的问题是
ddl1.databind()发生在按钮的单击事件中。因此,一旦ddl1的selectedindex发生更改,所选值将丢失并返回初始值
我不能用!iPostback
因为单击按钮时am绑定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;
}
}
这里的问题是同步以及它在哪里获取和绑定,但是您也可以使用
请求.Form
直接获取值
Request.Form[DropDownListID.UniqueID]
我不确定我是否理解了您的问题,因为很难看到什么是
ddl1
、ddl2
、gddl1
等等,以及何时处理每个事件
但我的猜测是:
- 在
btnproced\u单击
- 仅在中绑定GridView的两个DropDownList
然后,根据所选的
ddl1
值,您的“GridView下拉列表”始终是最新的。您可以通过将ddl1和ddl2作为属性存储在viewstate中来保留所选索引
private string ddlSelectedIndex
{
set { ViewState["SelectedIndex"] = value; }
get { return ViewState["SelectedIndex"] == null ? string.Empty : ViewState["SelectedIndex"].ToString(); }
}
上面的属性是string,您可以用类似的方式创建int属性,或者使用与string相同的强制转换索引。您选择的索引将保留在后续回发中。@itzArun:尝试将更新面板与异步回发一起使用back@Rocky但我使用的是2.0框架。所以我不能使用更新面板。有必要吗?
ddl所有
都在gridview之外。我正在绑定btnproced\u单击
并绑定GridviewgrdDetails
。Gridview有2个下拉列表(ddlValuaried,ddlReviewerId
)。在RowDataBound
事件中绑定这些下拉列表。我想通过更改ddlevaluardall
来更改gridview下拉列表ddlevaluardId
的selectedindex。ddlevaluardId
的选定值是正确的最新值,但是ddlevaluardAll
的SelectedIndex
在回发后没有保留。@itzArun:我们的谈话有点矛盾。如果我理解正确,您需要根据所选的ddl评估值all
设置ddl评估ID
,是吗?然后我的建议是在绑定ddlid
时在rowdabund中考虑这一点。并且当在更改了所有选定的索引后绑定GridView时,ddlAssessureId
将自动具有正确的项目。最后:您是否也在回发中绑定所有页面加载?仅当(!IsPostBack)并在btnproced\u中单击
时,才应将其绑定到。然后它将保留其价值。