首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2011-12-18 
DropDownList有一个无效的SelectedValue 因为它不在项目列表中,不要小看它C# code另一个方法中这样声明的D

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

C# code
 
另一个方法中这样声明的
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均没问题,联动效果的时候,重新绑定却出问题
[color=#FF0000]”DropDownList有一个无效的SelectedValue 因为它不在项目列表中“[/color]
奇怪的是,我已经做了ddl.Items.Clear();和重设SelectedIndex 处理,ddl.DataBind();的时候依然出这个错误。
请各位帮忙出主意,加班中,很急。。。
        private int BindDLL(Property pro,DropDownList ddl,bool isFahter,int ppr_id,int fatherId)
        {
            [color=#FF0000]ddl.Items.Clear();
            if(ddl.Items.Count > 0)
                ddl.SelectedIndex = 0;
            else
                ddl.SelectedIndex = -1;[/color]
            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;
            }
            [color=#FF0000]ddl.DataBind();[/color]//这里第一次绑定没错,第二次绑定出错

            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;
        }



[解决办法]
自己断个点看哪里出错撒。你这段贴出来又没上下文数据,我们也找不出的哈
[解决办法]
其实不需要那么麻烦,根据级联的条件··来进行新的查询
1,清空ITEMS
2,直接进行 datasource=“新的数据源” 你自己查询出来的
3,ddl1,databind();
然后判断需要选择的selectedvalue等于你查找的数据源就哦了
[解决办法]
if(ddl.Items.Count > 0)
ddl.SelectedIndex = 0;
else
ddl.SelectedIndex = -1;


改为==>

if(ddl.Items.Count > 0)
ddl.SelectedIndex = 0;
[解决办法]
DropDownList 的选项中没有对应SelectedValue的项
如果没有数据,没有默认提示无效 SelectedValue
[解决办法]
没办法解决,帮顶一下!
[解决办法]
帮顶

1楼 你的 头像太搞笑了吧
[解决办法]
aspx页面上的DropDownList控件上有无 SelectedValue='<%# Bind("xxx") %>' 这样的代码,
有的话,问题大至出在这里。

[解决办法]
DropDownList有一个无效的SelectedValue,是因为你的数据库表设计有主外键关系,其中外键表里的数据没有主键表里的主键
[解决办法]
try ClearSelection()
[解决办法]
比如你要设置11为选择项,但是你的dropdownlist中却没有这个项,这个不出错才怪呢。

热点排行