AssessProjectID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssessProject");
            AssessProjectID_Select.DataTextField = "AssessProjectName";
            AssessProjectID_Select.DataValueField = "AssessProjectID";
            AssessProjectID_Select.DataBind();“AssessProjectID_Select”有一个无效 SelectedValue,因为它不在项目列表中。
我网上查了查,需要加一个默认选项,AssessProjectID_Select.SelectedValue = "4";
这样暂时可以了,但是我把键为4的项删除后又不行了,怎么解决这个啊

解决方案 »

  1.   

    没太看明白你的意思。 你数据库里读出来怎么会有 无效的 Value 呢 你绑定的是ID就应该不会有问题。如果你要加默认项,应该是把值设置为0或者更小。
    AssessProjectID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssessProject");
                AssessProjectID_Select.DataTextField = "AssessProjectName";
                AssessProjectID_Select.DataValueField = "AssessProjectID";
                AssessProjectID_Select.DataBind();
    AssessProjectID_Select.Items.Insert(0, new ListItem("请选择", "0"));不知道你是不是要加默认选择项,为什么非要加4
      

  2.   

    如果你要指定 AssessProjectID_Select 的选择项,可以设定为该项的值,但是删除项目后你这个设定要重新更改。 否则就出现 该项不在项目中。
      

  3.   

    因为“4”是我绑定的数据中的最小的那个。
    还有加AssessProjectID_Select.Items.Insert(0, new ListItem("请选择", "0"));也是在绑定数据后加,我绑定数据的时候就出错了,“AssessProjectID_Select”有一个无效 SelectedValue,因为它不在项目列表中。AssessProjectID_Select.SelectedValue = "4";
    AssessProjectID_Select.DataBind();
    这样在绑定前加个选择的就能凑合
      

  4.   

    说明AssessProjectID_Select里面没有你要设置的值
      

  5.   

    要设置SelectedValue,应该这样
    ListItem x = AssessProjectID_Select.Items.FindByValue("默认选项的值")
    if(x!=null) x.Selected=true;
      

  6.   

    你好像没明白我的问题,
    我不是要设置SelectedValue,我是为了不要程序出错。
    AssessProjectID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssessProject");
    AssessProjectID_Select.DataBind();
    直接这样会出错,错误为:AssessProjectID_Select”有一个无效 SelectedValue,因为它不在项目列表中。
    在AssessProjectID_Select.DataBind();前面加一句AssessProjectID_Select.SelectedValue = "4";
    程序才能正常运行,为了运行程序才加的。
    但是这样肯定不行,有很大的隐患,把id为4的删除了就不行了
      

  7.   

    AssessProjectID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssessProject");
    AssessProjectID_Select.DataBind();
    这样写是不应该出错的。应该你还执行了其他的代码
      

  8.   

    private void BindDDL()
            {
                AssesTypeID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssesType");
                AssesTypeID_Select.DataTextField = "AssesTypeDesc";
                AssesTypeID_Select.DataValueField = "AssesTypeID";
                //AssesTypeID_Select.SelectedValue = "1";
                AssesTypeID_Select.DataBind();
                AssesTypeID_Select.Items.Insert(0, new ListItem("请选择", ""));
    }绑定事件里就这个,其他代码不会有影响吧。
    我也很奇怪,我前面一样的下拉框,用来查询的,不用选就可以,
    这个是用来添加的,就不行了。代码都一样啊
      

  9.   

    其他代码不会有影响吧。应该说,还真有可能其他代码的影响,
    你可以新建页面
    把AssesTypeID_Select.DataSource = FrameWork.BusinessFacade.GetList("KPI_AssesType");
                AssesTypeID_Select.DataTextField = "AssesTypeDesc";
                AssesTypeID_Select.DataValueField = "AssesTypeID";
                //AssesTypeID_Select.SelectedValue = "1";
                AssesTypeID_Select.DataBind();
                AssesTypeID_Select.Items.Insert(0, new ListItem("请选择", ""));放到新建页面里面,其他的不加,你可以测试是否还保错》