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

“DropDownList1”有一个无效 SelectedValue,由于它不在项目列表中

2012-12-22 
“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。2个表table1,table2table1列:id,nametabl

“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
2个表table1,table2
table1列:id,name        
table2列:id,name,sort1 //table1的name=table2的sort1

DropDownList1绑定table1
GridView1绑定table2
点修改,DropDownList1显示相应的 一级分类


protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            string sql = "select * from table1";
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);

            DropDownList1.DataSource = ds;
            DropDownList1.DataTextField = "name";
            DropDownList1.DataValueField = "name";
            DropDownList1.DataBind();

            string sql2 = "select * from table2";
            SqlDataAdapter da2 = new SqlDataAdapter(sql2, conn);
            DataSet ds2 = new DataSet();
            da2.Fill(ds2);
            GridView1.DataSource = ds2;
            GridView1.DataBind();
        }
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index = int.Parse(e.CommandArgument.ToString());
        int id = int.Parse(this.GridView1.DataKeys[index].Value.ToString());
        if (e.CommandName == "Edit")
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            string sql = "select * from table2 where id=" + id + "";
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DropDownList1.SelectedValue = ds.Tables[0].Rows[0]["sort1"].ToString();
            //Response.Write(ds.Tables[0].Rows[0]["sort1"].ToString());


        }
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {

    }


错误:

这是为什么啊
[最优解释]
上面应该改为:还有个不同的用法:就是SelectedItem.Text,可以了解一下!
[其他解释]
网上有很多这个错误的说明,你对着看看
[其他解释]
应该是 DropDownList1绑定的源 不包括元素:ds.Tables[0].Rows[0]["sort1"].ToString();
[其他解释]
为DropDownList1的SelectedValue的值必须是在DropDownList1中已经存在这个数据值,不然就会报错的
[其他解释]
看了下你的代码  貌似DropDownList1绑定的是table1  而你现在却把table2的数据 赋给DropDownList1
DropDownList1数据源并不包含table2 ,  应该就是这个导致报错的。
[其他解释]
引用:
看了下你的代码  貌似DropDownList1绑定的是table1  而你现在却把table2的数据 赋给DropDownList1
DropDownList1数据源并不包含table2 ,  应该就是这个导致报错的。


赞同,DropDownList的selectedValue的值必须是该控件绑定的数据源中存在的值!
还有个不同的用法:就是selectedItem,可以了解一下!
[其他解释]
你跟踪一下 看出错的那个值 在数据库里面有没有(注意空格,有时候数据库里的数据前面或结尾有空格,不仔细看看不出来)
[其他解释]
引用:
上面应该改为:还有个不同的用法:就是SelectedItem.Text,可以了解一下!

这个可以
其实DropDownList1.SelectedValue这样应该也是可以的,以前用过这种方法,数据库是oracle,现在数据库是SQLserver,同样表结构,同样的语句,效果就不一样,有些时候真的有些莫名其妙啊
[其他解释]
可以去看看DropDownList的SelectedValue和SelectedItem.Text的用法,这两者之间还是有差别的!

热点排行