Asp.net SelectedValue无效,因为它不在项目列表中
我反复遇到这个问题,不知道是什么原因造成的。我在DataBind:SelectedValue中得到一个异常,该异常无效,因为它不存在于项目列表中 以下是一些重要信息: 当基础数据发生更改时,我会定期重新加载列表组织。 Organization.DTListAll调用返回2个Int字符串对。 返回的数据中没有重复或空值 在下面的前两行之后,listOrgs.Items.Count为0,所选值为0 执行数据绑定操作后选择的值是数据中第一行的ID值 此异常在新页面加载后第一次执行此代码时发生Asp.net SelectedValue无效,因为它不在项目列表中,asp.net,data-binding,Asp.net,Data Binding,我反复遇到这个问题,不知道是什么原因造成的。我在DataBind:SelectedValue中得到一个异常,该异常无效,因为它不存在于项目列表中 以下是一些重要信息: 当基础数据发生更改时,我会定期重新加载列表组织。 Organization.DTListAll调用返回2个Int字符串对。 返回的数据中没有重复或空值 在下面的前两行之后,listOrgs.Items.Count为0,所选值为0 执行数据绑定操作后选择的值是数据中第一行的ID值 此异常在新页面加载后第一次执行此代码时发生 使用以下
使用以下命令更改前两行:
listOrgs.SelectedItem.Selected = false;
listOrgs.Items.Clear();
刷新数据源后,请尝试将listOrgs.SelectedValue设置为0
此时,您正在尝试选择空列表中的第一项。如果您仍然存在此问题,我就是这样解决的:
listOrgs.SelectedIndex = -1; // Clears the SelectedIndex to avoid the exception
listOrgs.DataSource = new Organization().DTListAll(SiteID);
listOrgs.DataTextField = "OrganizationName";
listOrgs.DataValueField = "OrganizationID";
listOrgs.DataBind(); //Unless you have "listOrgs.AppendDataBoundItems = true" you don't need to clear the list
显然,我发布的解决方案并不完全有效。。。最后,在我的申请中,我改为:
listOrgs.Items.Clear();
listOrgs.SelectedIndex = -1;
listOrgs.SelectedValue = null;
listOrgs.ClearSelection(); // Clears the selection to avoid the exception (only one of these should be enough but in my application I needed all..)
listOrgs.DataSource = new Organization().DTListAll(SiteID);
listOrgs.DataTextField = "OrganizationName";
listOrgs.DataValueField = "OrganizationID";
listOrgs.DataBind();
我一直犯这个错误。
奇怪的是,在设置数据源并在删除项目后重新绑定之前,所选索引=-1
如果我显式设置selectedIndex=-1;然后它工作,不会抛出错误
因此,即使它已经是-1,将其设置为-1会阻止它出错
奇怪吗?我不确定这是否是你的情况,但我也有同样的问题,显然没有任何解释,然后我意识到在记事本上复制并粘贴数据库的一个字段,该字段在值的开头有一个空值
奇怪的是,一个选择性连接表正在工作。工作正常后,我删除了行并重新插入 @PMarques的回答帮了我,解决了我的问题 然而,在进行实验时,我的脑海中突然闪现出为什么我首先要设计这个错误 我在设置Text属性时考虑到它可能会创建一个包含标签或fieldset+图例,但对我来说它不会 列表的属性实际上是ListControl的SelectedValue属性
因此,我错误地解释了text属性的作用。我反复遇到相同的错误,并尝试通过不将默认选定值设置为Index-1来结束 我对代码ddlDRIBidAmt.SelectedValue=-1进行了注释
此值是在“我的页面”控件重置为默认值时设置的 我知道现在回答这个问题太晚了,但我尝试的是一个肮脏的解决方案,但它奏效了。 数据绑定后,我将在索引0处插入一项
ddl.Items.Insert(0, new ListItem("---Select---","-1"));
在布景方面
我正在放置try-catch,在catch中,我将值设置为-1在哪一行发生异常?信息块5意味着每个语句执行时都没有异常。设置SelectedItem.Selected=false会引发异常异常什么是异常?也许您应该在绑定之前再次实例化dropdownlist:listOrgs=new dropdownlist;这是唯一对我有效的解决方案。我从来没有意识到stock ddl isI使一个从下拉列表派生的类变得多么可怕,并重写了DataSource属性集来调用这些东西,所以我不必记住到处都要这样做,它工作得很好。谢谢这对我也有用。但是我突然想到,创建一个DropDownList类的新实例并将其分配给同一个ID不是更容易吗?Sigh.listOrgs.Items.Clear;listOrgs.SelectedIndex=-1;listOrgs.SelectedValue=null;listOrgs.Clears选举;经过一些实验后,我能够将这些行简化为:listOrgs.Items.Clear;listOrgs.SelectedValue=null;我仍然不明白为什么这些陈述中的一个对我来说不够好。我仍然无法得到任何人能解释的真正原因??这证明了该控件设计中潜在的疯狂。我有同样的经历!我首先做了ddl.ClearSelection,它清除了所选的值和索引,但仍然得到了错误。但是,当我显式地设置ddl.SelectedIndex=-1和ddl.SelectedValue=null时,它可以工作???这就是我的工作。绝对荒谬。非常感谢。
ddl.Items.Insert(0, new ListItem("---Select---","-1"));