我的源码:    private void GetUserById(string userId)
    {
        ddlUName.Items.Clear();
        DataTable tb = safetyBaseBLL.GetUserById(userId);
        if (tb.Rows.Count > 0)
        {
            ddlUName.DataSource = tb;
            ddlUName.DataTextField = "UTrueName";
            ddlUName.DataValueField = "UID";
            ddlUName.DataBind();
        }
        ddlUName.Items.Insert(0, new ListItem("-- 请选择 --", ""));
    }    在ddlUName.DataBind();时报错为:
   “ddlUName”有一个无效 SelectedValue,因为它不在项目列表中。参数名: value   请教一下各位?

解决方案 »

  1.   

    在ddlUName.Items.Clear(); 之前加一句
    ddlUName.SelectedIndex = -1;
      

  2.   

    检查你返回的tb有没有 "UID"字段.
      

  3.   

    要在this.Page.IsPostBack
    赋值~~
      

  4.   

    ddlUName.Items.Insert(0, new ListItem("-- 请选择 --", "")); 放在绑定之前
      

  5.   

    页面控件那里是否直接指定了 SelectedValue属性
      

  6.   

     safetyBaseBLL.GetUserById 这个方法贴出来看看
      

  7.   

        改变了思路搞了一下,可以实现:
        private void GetUserById(string userId)
        {
            ddlUName.Items.Clear();
            DataTable table = allowanceBLL.GetUserById(userId);
            if (table.Rows.Count > 0)
            {
                ListItem item = new ListItem();
                item.Text = table.Rows[0]["UTrueName"].ToString();
                item.Value = table.Rows[0]["UId"].ToString();
                ddlUName.Items.Add(item);
            }
            ddlUName.Items.Insert(0, new ListItem("-- 请选择 --", ""));
        }
      

  8.   

    刚才模拟了一下错误。出现这种情况是因为在绑定之前对控件的SelectedValue属性赋值了。
    而赋的这个值没有出现在绑定的集合中