保留(动态填充)下拉列表项和GView内部的选择

时间:2013-11-07 07:04:34

标签: c# asp.net gridview drop-down-menu viewstate

我在GridView中有一个列,在EditTemplate

中有一个Dropdownlist

在用户进入该行的编辑模式后,动态添加此下拉列表的数据(items.add())。

foreach (var bgElement in userCropList.FirstOrDefault(c => c.Crop == cropToBeUpdated).BGs)
{
   ddl.Items.Add(bgElement.BG);
}
ddl.SelectedIndex = userCropList.FirstOrDefault(c => c.Crop == cropToBeUpdated).BGs.FindIndex(d => d.Default == true);

当用户点击更新按钮保存更改时,页面会进行回发,因此会丢失项目以及RowUpdating事件中以下位所需的selectedindex。

DropDownList ddl = (DropDownList)GVCrops.Rows[e.RowIndex].FindControl("ddlAvailableBGs");
updatedCrop.BGs.FirstOrDefault(c => c.BG == ddl.SelectedValue).Default = true;

我想到的是将用户在viewstate变量中选择的值放入RowUpdating事件中并从中读取。

我在问是否有一个更容易(不是很难)或已经可用的东西,我可能会错过哪些对我来说?

修改

好的,结果我的方法..

RowEditing():

ViewState.Add("SelectedBGIndex", ddl.SelectedValue);

RowUpdating():

if (ViewState["SelectedBGIndex"] != null)
{
   updatedCrop.BGs.FirstOrDefault(c => c.BG == ViewState["SelectedBGIndex"].ToString()).Default = true;
}

..显然不会出于同样的原因。 当用户单击该行的更新按钮时,它将回发并重置下拉列表,没有选择,也没有内容。

似乎解决方案将是一个JavaScript函数。 有任何想法如何处理它?<​​/ p>

0 个答案:

没有答案