[100分求助]:comboBox.SelectedValue 属性设置异常!

sqlchen 2004-11-04 01:30:54
## 我有这样一个表:

myID myName
------------------------ -----------------------------
1 aaa
2 bbb
3 ccc

## 在VS2003中,我的代码如下:
//
// step 1: 读取上面的表并fill到一个dataset中
//
DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(...);
da.Fill(ds, "table1");
//
// step 2: 在该表的开头插入一条记录
//
DataRow dr = ds.Tables["table1"].NewRow();
dr["myID"] = "0";
dr["myName"] = "<all>";
ds.Tables["table1"].Rows.InsertAt(dr, 0);
ds.Tables["table1"].AcceptChanges();
//
// step 3: 把其绑定到comboBox1
//
comboBox1.DataSource = ds.Tables["table1"];
comboBox1.DisplayMember = "myName";
comboBox1.ValueMember = "myID";

## 所有运行正常,comboBox1出现绑定表中的记录(包括新插入的那条).
## 但当我运行:

comboBox1.SelectedValue = 1; //error

## 时,出现异常。
## 我改为:

comboBox1.SelectedValue = 2; //no error

## 时,没有任何错误。

## 另外当我跳过step 2并运行"comboBox1.SelectedValue = 1;"时,也没有错误出现。
## 那么step 2到底有什么错呢?

(请不要建议我在“数据库”表中添加"0"-"<all>"的方法!)
...全文
462 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
trueboy 2005-07-27
  • 打赏
  • 举报
回复
很明显的呀!
zj3164 2005-07-27
  • 打赏
  • 举报
回复
大哥,我也有一样的错误,搞不定
表完全由本地组装是没问题的,但是从服务器下载以后,再加一行,然后绑定,就会有这样的错,郁闷!

参数名: “-2147483648”不是“index”的有效值。
参数名: “-2147483648”不是“index”的有效值。

你有搞定了吗?
暗石绿 2005-07-15
  • 打赏
  • 举报
回复
DataTable dtSource = new DataTable();
DataColumn dc = null;

dc = new DataColumn();
dc.ColumnName = "myID";
dc.DataType = Type.GetType("System.Int32");
dtSource.Columns.Add(dc);

dc = new DataColumn();
dc.ColumnName = "myName";
dc.DataType = Type.GetType("System.String");
dtSource.Columns.Add(dc);

DataRow dr = null;

/*
dr = dtSource.NewRow();
dr["myID"] = 0;
dr["myName"] = "<all>";
dtSource.Rows.Add(dr);
*/

dr = dtSource.NewRow();
dr["myID"] = 1;
dr["myName"] = "aaa";
dtSource.Rows.Add(dr);

dr = dtSource.NewRow();
dr["myID"] = 2;
dr["myName"] = "bbb";
dtSource.Rows.Add(dr);

dr = dtSource.NewRow();
dr["myID"] = 3;
dr["myName"] = "ccc";
dtSource.Rows.Add(dr);

dr = dtSource.NewRow();
dr["myID"] = 0;
dr["myName"] = "<all>";
dtSource.Rows.InsertAt(dr, 0);
dtSource.AcceptChanges();

comboBox1.DataSource = dtSource;
comboBox1.DisplayMember = "myName";
comboBox1.ValueMember = "myID";

comboBox1.SelectedValue = 1; // 没有错误



没看出来有什么错误,哈哈
sqlchen 2005-07-12
  • 打赏
  • 举报
回复
to xrascal(横刀夺爱) :
不管有没有,都有问题
而且我添加的是
dr["myID"] = "0";
dr["myName"] = "<all>";
暗石绿 2005-07-12
  • 打赏
  • 举报
回复
你的 ds.Tables["table1"] 表的 MyID 列有 1 这个值吗?
conan1211 2005-07-12
  • 打赏
  • 举报
回复
拖上来的也是comboboxitem这个类的实例啊
无雨就是晴天 2005-07-12
  • 打赏
  • 举报
回复
难到是微软的BUG?问题是很多人居然都没遇到过这个问题呢。
辉说慧语 2005-07-11
  • 打赏
  • 举报
回复
没有留意过,关注。。。
无雨就是晴天 2005-07-11
  • 打赏
  • 举报
回复
这里有好几个人遇到这个问题了。有更好的解决方法吗?都去循环一遍毕竟不方便,难道这是.net的一个BUG???
cdo 2005-07-11
  • 打赏
  • 举报
回复
最好是写一个comboboxitem的类,里面有text和value两个属性,然后在combobox.add方法里面加这个对象.
lulei 2005-07-11
  • 打赏
  • 举报
回复
第二步覆盖了comboBox1.SelectedValue = 1;的记录
conan1211 2005-07-11
  • 打赏
  • 举报
回复
ds.Tables["table1"].AcceptChanges();
把这一句不要试试
无雨就是晴天 2005-07-10
  • 打赏
  • 举报
回复
确实存在这个问题?大家是如何解决的啊?
xhwy888 2004-12-30
  • 打赏
  • 举报
回复
comboBox1.item.tostring()
心情解码 2004-12-24
  • 打赏
  • 举报
回复
帮顶..!!!!!!!!!!!!!!!
tonrew 2004-12-24
  • 打赏
  • 举报
回复
俺现在也碰到这个问题,暂时我是怎么解决滴
for (i=0;i<comboBox1.Items.Count;i++)
{
comboBox1.SelectedIndex = i;
if (comboBox1.SelectedValue.ToString() == "1")
break;
}

高手还有解决办法么?
520NET 2004-11-05
  • 打赏
  • 举报
回复
LG
sqlchen 2004-11-05
  • 打赏
  • 举报
回复
up up
sqlchen 2004-11-05
  • 打赏
  • 举报
回复
???
sqlchen 2004-11-04
  • 打赏
  • 举报
回复
System.ArgumentOutOfRangeException
其他信息: 指定的参数已超出有效值的范围。

to: jinbingg(bing)
不行
加载更多回复(5)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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