“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。

I_was_a_novice 2012-11-27 02:12:44
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)
{

}

错误:

这是为什么啊
...全文
664 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
光脚四海 2012-11-27
  • 打赏
  • 举报
回复
可以去看看DropDownList的SelectedValue和SelectedItem.Text的用法,这两者之间还是有差别的!
I_was_a_novice 2012-11-27
  • 打赏
  • 举报
回复
引用 6 楼 d7651675 的回复:
上面应该改为:还有个不同的用法:就是SelectedItem.Text,可以了解一下!
这个可以 其实DropDownList1.SelectedValue这样应该也是可以的,以前用过这种方法,数据库是oracle,现在数据库是SQLserver,同样表结构,同样的语句,效果就不一样,有些时候真的有些莫名其妙啊
踏平扶桑 2012-11-27
  • 打赏
  • 举报
回复
你跟踪一下 看出错的那个值 在数据库里面有没有(注意空格,有时候数据库里的数据前面或结尾有空格,不仔细看看不出来)
光脚四海 2012-11-27
  • 打赏
  • 举报
回复
上面应该改为:还有个不同的用法:就是SelectedItem.Text,可以了解一下!
光脚四海 2012-11-27
  • 打赏
  • 举报
回复
引用 4 楼 wapdos 的回复:
看了下你的代码 貌似DropDownList1绑定的是table1 而你现在却把table2的数据 赋给DropDownList1 DropDownList1数据源并不包含table2 , 应该就是这个导致报错的。
赞同,DropDownList的selectedValue的值必须是该控件绑定的数据源中存在的值! 还有个不同的用法:就是selectedItem,可以了解一下!
wapdos 2012-11-27
  • 打赏
  • 举报
回复
看了下你的代码 貌似DropDownList1绑定的是table1 而你现在却把table2的数据 赋给DropDownList1 DropDownList1数据源并不包含table2 , 应该就是这个导致报错的。
conan8126 2012-11-27
  • 打赏
  • 举报
回复
为DropDownList1的SelectedValue的值必须是在DropDownList1中已经存在这个数据值,不然就会报错的
wapdos 2012-11-27
  • 打赏
  • 举报
回复
应该是 DropDownList1绑定的源 不包括元素:ds.Tables[0].Rows[0]["sort1"].ToString();
bdmh 2012-11-27
  • 打赏
  • 举报
回复
网上有很多这个错误的说明,你对着看看

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧