• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

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

sqlchen AMANO Shanghai 高级软件工程师  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>"的方法!)
...全文
431 点赞 收藏 25
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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这个类的实例啊
回复
wuyouyi 2005-07-12
难到是微软的BUG?问题是很多人居然都没遇到过这个问题呢。
回复
smin1994 2005-07-11
没有留意过,关注。。。
回复
wuyouyi 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();
把这一句不要试试
回复
wuyouyi 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)
不行
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-11-04 01:30
社区公告

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