本帖最后由 bulls5988 于 2011-03-15 15:01:47 编辑

解决方案 »

  1.   

    你没加这个
    if (!IsPostBack)
    {}
      

  2.   


    还没看楼主的代码~~~~~~~不过你的这个IsPostBack好像是WEB程序的吧?
      

  3.   

    。。
    猛一看是winform的代码,我晕死
    断点调试下,程序是咋跑的
    失败ing.....
      

  4.   


                while (rs_card.Read())
                {
                    class_card_id = (rs_card["card_id"]).ToString();
                    class_card_name = (rs_card["card_name"]).ToString();
                    class_card_fee = (rs_card["card_fee"]).ToString();
                    dl_card_class.ValueMember = class_card_id;
                    dl_card_class.Items.Add(class_card_name);
                    dl_card_class.SelectedIndex = 0;
                }循环代码应该有错误
      

  5.   

    dl_card_class.ValueMember = class_card_id;应该是这句的问题
      

  6.   

                while (rs_card.Read())
                {
                    class_card_id = (rs_card["card_id"]).ToString();
                    class_card_name = (rs_card["card_name"]).ToString();
                    class_card_fee = (rs_card["card_fee"]).ToString();
                    dl_card_class.ValueMember = class_card_id;
                    dl_card_class.Items.Add(class_card_name);
                    dl_card_class.SelectedIndex = 0;
                }
    lz代码错误参考:ComboBoxTreatmentSort.DataSource = dataTableTreatmentType;//这个是你的数据源datatable
    ComboBoxTreatmentSort.DisplayMember = "card_name";//这个是datatable里面的栏位
    ComboBoxTreatmentSort.ValueMember = "card_id";//这个是datatable里面的栏位ComboBoxTreatmentSort.SelectedValue.ToString() 对应的就是ValueMember 里帮定的栏位的值
      

  7.   

    写了个简单方法,你参考一下:        private void Form1_Load(object sender, EventArgs e)
            {
                List<string> list = new List<string>();
                list.Add("a");
                list.Add("b");
                list.Add("c");
                for (int i = 0; i < list.Count; i++)
                {
                    comboBox1.Items.Add(list[i]);
                }
            }        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                MessageBox.Show("选中了:"+comboBox1.SelectedItem.ToString());
            }
      

  8.   

    while (rs_card.Read())
      {
      class_card_id = (rs_card["card_id"]).ToString();
      class_card_name = (rs_card["card_name"]).ToString();
      class_card_fee = (rs_card["card_fee"]).ToString();
      dl_card_class.ValueMember = class_card_id;
      dl_card_class.Items.Add(class_card_name);
      dl_card_class.SelectedIndex = 0;
      }改成
    datatable dt=new datatable();
    dt.load(rs_card);
    dl_card_class.DisplayMember = "card_name";//这个是datatable里面的栏位
    dl_card_class.ValueMember = "card_id";//这个是datatable里面的栏位string name=ComboBoxTreatmentSort.SelectedText.ToString() 
    string id=ComboBoxTreatmentSort.SelectedValue.ToString() 
      

  9.   

    改成  纠正///////////////
    datatable dt=new datatable();
    dt.load(rs_card);
    dl_card_class.datasource=dt;  //绑定下数据源
    dl_card_class.DisplayMember = "card_name";//这个是datatable里面的栏位
    dl_card_class.ValueMember = "card_id";//这个是datatable里面的栏位
    dl_card_class.selectindex=0;//初始化选择项string name=dl_card_class.SelectedText.ToString()  
    string id=dl_card_class.SelectedValue.ToString() 
      

  10.   

    你这样写,下拉框显示肯定会正常。
    解释:
    comboBox1.ValueMember = "1";
    comboBox1.Items.Add("一");comboBox1.ValueMember = "2";
    comboBox1.Items.Add("二");comboBox1.ValueMember = "3";
    comboBox1.Items.Add("三");
    comboBox1.SelectedIndex = 0;这样只是添加了3列数据的显示值一二三进入下拉框。下拉框的ValueMember值并未能对应添加。所以默认最后一个值comboBox1.ValueMember = "3";通过下拉事件取comboBox1.ValueMember时,自然默认都是3。
    通过调试你可以看到。是有selectItem会有对应的值。并没有value值。
      

  11.   

    dl_card_class.ValueMember = class_card_id;
    把它设成6了,而不是3、4、5、6
      

  12.   

     while (rs_card.Read())
                {
                    class_card_id = (rs_card["card_id"]).ToString();
                    class_card_name = (rs_card["card_name"]).ToString();
                    class_card_fee = (rs_card["card_fee"]).ToString();
                    dl_card_class.ValueMember = class_card_id;
                    dl_card_class.Items.Add(class_card_name);
                    dl_card_class.SelectedIndex = 0;
                }
    你循环问题吧。你只是把最后循环的class_card_id是6的给了dl_card_class.ValueMember吧。
      

  13.   

    datatable ... 找不到类型或命名空间名称“datatable”(是否缺少 using 指令或程序集引用?) 
      

  14.   

    using System.Data; //头顶上引用
      

  15.   

    阅读器关闭时尝试调用 MetaData 无效?
     
    while (rs_card.Read())
                {
                    DataTable dt = new DataTable();
                    dt.Load(rs_card);
                    dl_card_class.DataSource = dt;                 dl_card_class.DisplayMember = (rs_card["card_name"]).ToString();                dl_card_class.SelectedIndex = 0;
                }
                class_conn.Close();
                rs_card.Close();
      

  16.   

    阅读器关闭时尝试调用 MetaData 无效? 什么地方写错了?while (rs_card.Read())
    {
    DataTable dt = new DataTable();
    dt.Load(rs_card);
    dl_card_class.DataSource = dt;                 
    dl_card_class.DisplayMember = (rs_card["card_name"]).ToString();                dl_card_class.SelectedIndex = 0;
    }
    class_conn.Close();
    rs_card.Close();
      

  17.   


    private void dl_card_class_SelectedIndexChanged(object sender, EventArgs e)
    {
         class_card_id = dl_card_class.ValueMember;
         tb_fee_in_money.Text = dl_card_class.SelectedValue;
    }
      

  18.   

    未处理 System.InvalidOperationException
    Message="阅读器关闭时尝试调用 MetaData 无效。"
      

  19.   


    从抛出的异常来看,是你调用了DataReader,但是,在关闭了连接之后试图访问数据集,自然是会抛出异常的。因为,DataReader并没有断开式操作的能力,
      

  20.   

    while (rs_card.Read())
    {
    DataTable dt = new DataTable();
    dt.Load(rs_card);
    dl_card_class.DataSource = dt;                 
    dl_card_class.DisplayMember = (rs_card["card_name"]).ToString();                dl_card_class.SelectedIndex = 0;
    }
    rs_card.Close();
    class_conn.Close();

    红色代码改一下位置看看
      

  21.   

    while (rs_card.Read()) //这个是不要的
    {
    DataTable dt = new DataTable();
    dt.Load(rs_card);
    dl_card_class.DataSource = dt;                 
    dl_card_class.DisplayMember = (rs_card["card_name"]).ToString();                dl_card_class.SelectedIndex = 0;
    }
    -------------------替换----------------datatable dt=new datatable();
    dt.load(rs_card);
    dl_card_class.datasource=dt; //绑定下数据源
    dl_card_class.DisplayMember = "card_name";//这个是datatable里面的栏位
    dl_card_class.ValueMember = "card_id";//这个是datatable里面的栏位
    dl_card_class.selectindex=0;//初始化选择项