Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SelectedValue无效,因为它不在项目列表中_Asp.net_Data Binding - Fatal编程技术网

Asp.net SelectedValue无效,因为它不在项目列表中

Asp.net SelectedValue无效,因为它不在项目列表中,asp.net,data-binding,Asp.net,Data Binding,我反复遇到这个问题,不知道是什么原因造成的。我在DataBind:SelectedValue中得到一个异常,该异常无效,因为它不存在于项目列表中 以下是一些重要信息: 当基础数据发生更改时,我会定期重新加载列表组织。 Organization.DTListAll调用返回2个Int字符串对。 返回的数据中没有重复或空值 在下面的前两行之后,listOrgs.Items.Count为0,所选值为0 执行数据绑定操作后选择的值是数据中第一行的ID值 此异常在新页面加载后第一次执行此代码时发生 使用以下

我反复遇到这个问题,不知道是什么原因造成的。我在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"));