读书人

“DropDownList1”有一个无效 Selecte

发布时间: 2012-12-22 12:05:06 作者: rapoo

“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的用法,这两者之间还是有差别的!

读书人网 >asp.net

热点推荐