## 我有这样一个表: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>"的方法!)

解决方案 »

  1.   

    comboBox1.SelectedValue = "1"; catch 一下看什么错
      

  2.   

    comboBox1.Item.Clear()
    comboBox1.DataSource = ds.Tables["table1"];
    这样看看行不行
      

  3.   

    System.ArgumentOutOfRangeException
    其他信息: 指定的参数已超出有效值的范围。to: jinbingg(bing) 
    不行
      

  4.   

    俺现在也碰到这个问题,暂时我是怎么解决滴
    for (i=0;i<comboBox1.Items.Count;i++)
    {
      comboBox1.SelectedIndex = i;
      if (comboBox1.SelectedValue.ToString() == "1")
        break;
    }高手还有解决办法么?
      

  5.   

    这里有好几个人遇到这个问题了。有更好的解决方法吗?都去循环一遍毕竟不方便,难道这是.net的一个BUG???
      

  6.   

    ds.Tables["table1"].AcceptChanges();
    把这一句不要试试
      

  7.   

    第二步覆盖了comboBox1.SelectedValue = 1;的记录
      

  8.   

    最好是写一个comboboxitem的类,里面有text和value两个属性,然后在combobox.add方法里面加这个对象.
      

  9.   

    拖上来的也是comboboxitem这个类的实例啊
      

  10.   

    你的 ds.Tables["table1"] 表的 MyID 列有 1 这个值吗?
      

  11.   

    to  xrascal(横刀夺爱) :
    不管有没有,都有问题
    而且我添加的是
    dr["myID"] = "0";
    dr["myName"] = "<all>";
      

  12.   

    难到是微软的BUG?问题是很多人居然都没遇到过这个问题呢。
      

  13.   

    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; // 没有错误没看出来有什么错误,哈哈
      

  14.   

    大哥,我也有一样的错误,搞不定
    表完全由本地组装是没问题的,但是从服务器下载以后,再加一行,然后绑定,就会有这样的错,郁闷!参数名: “-2147483648”不是“index”的有效值。
    参数名: “-2147483648”不是“index”的有效值。
     
    你有搞定了吗?