问题描述
CS为:protectedvoidRowCommand(objectsender,GridViewCommandEventArgse){AccessDataSourceads=newAccessDataSource();ads.DataFile="~/App_data/Ti_en_data.mdb";DropDownListddl=(DropDownList)GridView1.FindControl("DropDownList1");intn=Convert.ToInt32(ddl.SelectedValue);ads.UpdateCommand="UpdateSubmenuSetSubmenu_num=Submenu_num-1wheremenu_mainid="+Convert.ToString(n);ads.Update();Response.Redirect("ContentList.aspx");}但会问题如下:未将对象应用到对象的实列上。
解决方案
解决方案二:
你最好看看这个异常的细节,异常在哪行抛出?
解决方案三:
不能调试吗?可以调试的话跟一下,看看哪里出错了
解决方案四:
出现null值打个断点
解决方案五:
<asp:TemplateFieldHeaderText="所属栏目"SortExpression="content_type"><ItemTemplate>源码:<asp:DropDownListID="DropDownList1"runat="server"DataSourceID="AccessDataSource2"DataTextField="Submenu_name"DataValueField="Submenu_id"SelectedValue='<%#Bind("menu_mainid")%>'></asp:DropDownList></ItemTemplate><asp:AccessDataSourceID="AccessDataSource2"runat="server"DataFile="~/App_Data/Ti_en_data.mdb"SelectCommand="SELECT*FROM[Submenu]"></asp:AccessDataSource>结果:异常详细信息:System.ArgumentOutOfRangeException:“DropDownList1”有一个无效SelectedValue,因为它不在项目列表中。参数名:value有几个其它的页面和这个一样没有出现这样的问题
解决方案六:
引用3楼ludongalj的回复:
出现null值打个断点
能不能详细点,我原来是ASP,刚刚学ASP.net
解决方案七:
你要这么考虑:在运行时,GridView是有n行的,那么也就是说,有n个DropdownList你在代码中跟GridView要DropdownList,它怎么知道你要哪一行的?所以,你得从当前行中获取控件的引用
解决方案八:
应该是这边的问题DropDownListddl=(DropDownList)GridView1.FindControl("DropDownList1");改为DropDownListddl=(DropDownList)GridView1.cells[i].FindControl("DropDownList1");这里的i就是geidview1中的第几列。