Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dropdownlist回发中的选定值_C#_Asp.net - Fatal编程技术网

C# Dropdownlist回发中的选定值

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

我有两个下拉列表(ddl1,ddl2)和一个带有两个下拉列表(gddl1,gddl2)的gridview。在回发中gddl1的ddl1 am更改
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单击
并绑定Gridview
grdDetails
。Gridview有2个下拉列表(
ddlValuaried,ddlReviewerId
)。在
RowDataBound
事件中绑定这些下拉列表。我想通过更改
ddlevaluardall
来更改gridview下拉列表
ddlevaluardId
的selectedindex。
ddlevaluardId
的选定值是正确的最新值,但是
ddlevaluardAll
SelectedIndex
在回发后没有保留。@itzArun:我们的谈话有点矛盾。如果我理解正确,您需要根据所选的
ddl评估值all
设置
ddl评估ID
,是吗?然后我的建议是在绑定
ddlid
时在rowdabund中考虑这一点。并且当在更改了所有选定的索引后绑定GridView时,
ddlAssessureId
将自动具有正确的项目。最后:您是否也在回发中绑定所有页面加载?仅当(!IsPostBack)
并在
btnproced\u中单击
时,才应将其绑定到
。然后它将保留其价值。