首页 新闻 赞助 找找看

有一个无效 SelectedValue,因为它不在项目列表中

0
悬赏园豆: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 ">&nbsp;</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对象的引用,这是为什么呢?
NanKe Sir's Blog的主页 NanKe Sir's Blog | 初学一级 | 园豆:100
提问于:2008-02-25 08:48
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册