DropDownList有一个无效的SelectedValue 因为它不在项目列表中,不要小看它

Rock870210 2010-03-06 12:52:38


另一个方法中这样声明的
DropDownList ddl = new DropDownList();
ddl.ID = "ddl_" + pro.Property_ID.ToString();
ddl.DataTextField = "PV_Value";
ddl.DataValueField = "PropertyValues_ID";
ddl.Width = Unit.Pixel(400);

首次加载各DropDownList均没问题,联动效果的时候,重新绑定却出问题
”DropDownList有一个无效的SelectedValue 因为它不在项目列表中“
奇怪的是,我已经做了ddl.Items.Clear();和重设SelectedIndex 处理,ddl.DataBind();的时候依然出这个错误。
请各位帮忙出主意,加班中,很急。。。
private int BindDLL(Property pro,DropDownList ddl,bool isFahter,int ppr_id,int fatherId)
{
ddl.Items.Clear();
if(ddl.Items.Count > 0)
ddl.SelectedIndex = 0;
else
ddl.SelectedIndex = -1;

if(ppr_id!=0)
ddl.DataSource = BPropertyValues.GetListByRelation(ppr_id, fatherId);
else
ddl.DataSource = BPropertyValues.GetExtendValues(pro.Property_ID, 1);
if(isFahter)
{
ddl.SelectedIndexChanged += new EventHandler(ddlInput_SelectedIndexChanged);
ddl.AutoPostBack = true;
}
ddl.DataBind();//这里第一次绑定没错,第二次绑定出错

if(pro.Pro_IsMust == 0)
{
ListItem item = new ListItem();
item.Text = "--请选择--";
item.Value = "0";
ddl.Items.Insert(0, item);
ddl.SelectedIndex = 0;
}
else if(ddl.Items.Count>0)
ddl.SelectedIndex = 0;
if(PageType == "update")
{
if(TM.TP_List.ContainsKey(pro.Property_ID.ToString()))
{
ListItem item = new ListItem(TM.TP_List[pro.Property_ID.ToString()].TP_Value, TM.TP_List[pro.Property_ID.ToString()].PropertyValues_ID.ToString());
if(pro.Pro_IsMust == 0)
{
if(!ddl.Items.Contains(item))
{
ddl.Items.Insert(1, item);
ddl.SelectedIndex = 1;
}
else
ddl.SelectedValue = item.Value;
}
else
{
if(!ddl.Items.Contains(item))
{
ddl.Items.Insert(0, item);
ddl.SelectedIndex = 0;
}
else
ddl.SelectedValue = item.Value;
}
}
}
int selectValue = 0;
if(ddl.Items.Count>0)
selectValue = Convert.ToInt32(ddl.SelectedValue);
return selectValue;
}
...全文
1929 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxqyxxhb 2012-08-23
  • 打赏
  • 举报
回复
这样就可以了。
ddl_title.Items.Clear()
ddl_title.Text = Nothing
ddl_title.DataBind()
Rock870210 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 的回复:]

楼主到底怎么解决这问题的啊,跟我们分享哈,我现在也出现了同样的问题,代码如下:
ddl_title.Items.Clear();
Titles tl = new Titles();
ddl_title.DataSource = tl.GetAllTitle().Tables[0].DefaultView;
d……
[/Quote]

问题已经过去很久了,不知道怎么解决的。抱歉
guanlianan 2012-05-25
  • 打赏
  • 举报
回复
我也出现这个问题,找了大半天才找到根源。也许不适合每一个人的情况,请参考:

http://blog.sina.com.cn/s/blog_4d96ee050101440u.html
dyyzty0805081013 2012-05-17
  • 打赏
  • 举报
回复
楼主到底怎么解决这问题的啊,跟我们分享哈,我现在也出现了同样的问题,代码如下:
ddl_title.Items.Clear();
Titles tl = new Titles();
ddl_title.DataSource = tl.GetAllTitle().Tables[0].DefaultView;
ddl_title.DataTextField = "titlecontent";
ddl_title.DataValueField = "titleid";
ddl_title.DataBind();
ddl_title.Items.Insert(0,"Please Choose Title");
majic2008 2011-02-25
  • 打赏
  • 举报
回复
顺序错误
随心2004 2010-09-06
  • 打赏
  • 举报
回复
楼主如何解决的啊,苦盼中。。。
随心2004 2010-09-06
  • 打赏
  • 举报
回复
遇到了同样的问题,不知楼主现在是否已解决此问题,请指点。。。
Miamiiii 2010-07-13
  • 打赏
  • 举报
回复
selectedIndex应该重设为-1,再执行DataBind()
阿非 2010-03-08
  • 打赏
  • 举报
回复
try ClearSelection()
Rock870210 2010-03-08
  • 打赏
  • 举报
回复
结贴,问题在乱七八糟的修改中给解决了。不过这问题还是有点迷惑。
建议热心的朋友看好人家的问题和相关描述再给出答案。
Rock870210 2010-03-08
  • 打赏
  • 举报
回复
引用 14 楼 wtuitxu0913 的回复:
其实不需要那么麻烦,根据级联的条件··来进行新的查询
1,清空ITEMS
2,直接进行 datasource=“新的数据源” 你自己查询出来的
3,ddl1,databind();
然后判断需要选择的selectedvalue等于你查找的数据源就哦了

你回复友情帮顶都比这个好
wtuitxu0913 2010-03-08
  • 打赏
  • 举报
回复
其实不需要那么麻烦,根据级联的条件··来进行新的查询
1,清空ITEMS
2,直接进行 datasource=“新的数据源” 你自己查询出来的
3,ddl1,databind();
然后判断需要选择的selectedvalue等于你查找的数据源就哦了
Rock870210 2010-03-08
  • 打赏
  • 举报
回复
回11楼,这种情况不存在,如果外键表数据主键表不存在,那这条数据根本就无法存在,除非允许外键为空
其次,数据绑定在DropDownList上的时候,即使外键列为空,代码里该属性默认也是0,绑定是不管是否数据存在问题,只管相应的text和value对应上即可
Rock870210 2010-03-08
  • 打赏
  • 举报
回复
回10楼,动态创建的控件,您肯定没看代码的。
回11楼,这种情况貌似可能,有待验证
Rock870210 2010-03-08
  • 打赏
  • 举报
回复
引用 18 楼 chen_ya_ping 的回复:
比如你要设置11为选择项,但是你的dropdownlist中却没有这个项,这个不出错才怪呢。

我已经重设selectedindex为-1了,拜托!
chen_ya_ping 2010-03-08
  • 打赏
  • 举报
回复
比如你要设置11为选择项,但是你的dropdownlist中却没有这个项,这个不出错才怪呢。
nevergiveup_zt 2010-03-07
  • 打赏
  • 举报
回复
DropDownList有一个无效的SelectedValue,是因为你的数据库表设计有主外键关系,其中外键表里的数据没有主键表里的主键
zming 2010-03-07
  • 打赏
  • 举报
回复
aspx页面上的DropDownList控件上有无 SelectedValue='<%# Bind("xxx") %>' 这样的代码,
有的话,问题大至出在这里。
fina1982 2010-03-06
  • 打赏
  • 举报
回复
帮顶

1楼 你的 头像太搞笑了吧
andy796746 2010-03-06
  • 打赏
  • 举报
回复
没办法解决,帮顶一下!
加载更多回复(7)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧