我有一个GridView,每行都有Edit按钮。单击后,其中一列变为下拉列表,用户可以在其中选择值。编辑按钮变为更新 - 非常简单的常规方案。
现在,在点击更新后,我似乎无法获取所选的下拉列表。这是我的代码:
protected void gv_UpdateRow(string arg)
{
int currentIndex = gv.EditIndex;
gv.EditIndex = -1;
GridViewRow currentRow = gv.Rows[currentIndex];
try
{
string value2 = ((DropDownList)currentRow.FindControl("ddlValueTwo")).SelectedItem.ToString();
}
catch
{
Response.Write("error");
}
BindGridView();
}
基本上,程序执行总是在catch语句中结束。我已经检查并找到了下拉列表,当找不到所选项时抛出异常。
是什么给出了?
我使用c#asp.net 2.0 web表单
答案 0 :(得分:1)
看起来像数据绑定错误,您正在尝试访问尚不存在的数据...
答案 1 :(得分:1)
得到了它!
是IsPostback,我错过了它,因此gridview在每次加载页面时都会被反弹,并且由于下拉列表位于网格内部,因此数据丢失了。
但是,我忘记在这里提到的一件事是所有这些代码都位于用户控件(ascx文件)中,并且IsPostBack属性适用于页面而不是控件,这在我的情况下是无用的。例如,在我的情况下,我手动添加控件,因此IsPostback将始终为真,所以为了避免这个问题,我必须实现基于会话的解决方案。希望这有助于某人。
还有usercontrol.IsPostBack属性,但它没有按预期执行,也许它们正确地适用于3.0
答案 2 :(得分:0)
首先想到的是你应该做SelectedItem.Value而不是SelectedItem.ToString()。