悬赏园豆:100
[已关闭问题]
<P><SPAN>GridView中有一个供应商Supplier字段,我希望在编辑的时候可以从DropDownList中选择供应商。于是就将Supplier列修改为模板列,其EditItemTemplate中加入一个名为SupplierDrpDwnLst的DropDownList控件,绑定到一个供应商记录表中,运行时出现下面的错误提示:</SPAN><SPAN></P>
<H1><FONT size=2>“/TechManage”应用程序中的服务器错误。
<HR width="100%" color=silver SIZE=1>
</FONT></H1>
<H2><FONT size=2><I>“SupplierDrpDwnLst”有一个无效 SelectedValue,因为它不在项目列表中。<BR>参数名: value</I> </FONT></H2>
<P></SPAN><FONT face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "><B>说明: </B>执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 <BR><BR><B>异常详细信息: </B>System.ArgumentOutOfRangeException: “SupplierDrpDwnLst”有一个无效 SelectedValue,因为它不在项目列表中。<BR>参数名: value<BR></FONT><FONT face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "> </FONT></P>
<P><FONT face=Arial>我已经知道错误的原因,GridView中含有SupplierDrpDwnLst中没有的供应商。在编辑时,SupplierDrpDwnLst将SelectedValue设置为GridView中相应的值,如果SupplierDrpDwnLst中没有该值,就会出现无效的SelectedValue,所以会出现上述错误。</FONT></P>
<P><FONT face=Arial>我在网上找到的一个解决方法是:</FONT></P>
<P><A href="http://www.cnblogs.com/qqcrazyer/archive/2007/01/26/631455.html">http://www.cnblogs.com/qqcrazyer/archive/2007/01/26/631455.html</A></P>
<P>对于这一句代码:DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("qqcrazyer"));</P>
<P>我应该写在什么地方?我如何才能得到DropDownList1对象的引用?FindByValue方法中的参数是什么?(说明:ItemTempate中有一个标签Label1)</P>
<P>我是个初学者,很多问题不清楚,如果问的问题太弱智还希望各位前辈不要见笑,尽量回答的详细一点,谢谢!<BR></P>
问题补充:
首先谢谢您的回答,这个我已经试过,问题是,我在RowEditing事件中添加了下面的代码:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {
DropDownList drpDwnLst = (DropDownList)this.GridView1.Rows[e.NewEditIndex].FindControl("supplierDrpDwnLst");
ListItem li = drpDwnLst.Items.FindByValue("supplier");
if (li != null) {
li.Selected = true;
}
}
运行时出现这样的错误提示:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 31: protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {
行 32: DropDownList drpDwnLst = (DropDownList)this.GridView1.Rows[e.NewEditIndex].FindControl("supplierDrpDwnLst");
====》(此行被标记为红色)行 33: ListItem li = drpDwnLst.Items.FindByValue("supplier");
行 34: if (li != null) {
行 35: li.Selected = true;
也就是说我并没有得到supplierDrpDwnLst对象的引用,这是为什么呢?