学习datagridview时想实现如下的功能,在combox选择一个数据项,datagridview根据此项筛选相关项,但在combox通过数据绑定方式读取数据时,datagridwiew不能进行筛选。
    public partial class Form2 : Form
    {
        SqlConnection conn;
        DataSet ds;
        public Form2()
        {
            InitializeComponent();
        }        private void Form2_Load(object sender, EventArgs e)
        {
            conn = new SqlConnection("server=(local);database=aaa;uid=sa;pwd=");
            SqlDataAdapter da = new SqlDataAdapter("select name from ss", conn);
            ds = new DataSet("myDs");
            da.Fill(ds, "ss");
            comboBox1.DisplayMember = "name";
            comboBox1.DataSource = ds.Tables["ss"].DefaultView; 
            bind();        }
        private void bind() {
            SqlDataAdapter sda = new SqlDataAdapter("select * from t_bloodinput where doc_1='" + comboBox1.Text + "'",conn);
            sda.Fill(ds,"t_bloodinput");
            dataGridView1.DataSource = ds.Tables["t_bloodinput"].DefaultView;
            
        }        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            bind();
        }
而用items.add(datareader)一条条添加时没此问题,请问是何原因!

解决方案 »

  1.   

    bind()方法里sql语句最后改为combobox.text.trim();
    想着你的原因是不是load里返回的以table形式数据集给combobox,而不是列里面的值呢,只是提供点想法,我也不是高手。
      

  2.   

    好像没什么问题!
    comboBox1.DataSource = ds.Tables["ss"];
    这样行不行 
      

  3.   

    用默认视图与数据表都不行,我试了。
    load时能显示出需要的值,但每次的comboBox1_SelectedIndexChanged事件都是叠加显示,即原有的值都在,再加上现在筛选出的值。
    comboBox1_SelectedIndexChanged,我通过textBox获取comboBox1的text值是我所需要的值,同时 SqlDataAdapter sda = new SqlDataAdapter("select * from t_bloodinput where doc_1='" + comboBox1.Text + "'",conn);中的sql语句也是需要的语句,都没问题,就是datagridview的显示结果是叠加的。请继续关注!
      

  4.   

    DataTable dt = (DataTable)dataGridView1.DataSource; 
    dt.Rows.Clear(); 
    dataGridView1.DataSource = dt; dataGridView1.DataSource = null;
      

  5.   

    dt.Rows.Clear(); 空值引用报错呀!
      

  6.   

    主要想知道原因,因为我用combox的item添加项的方法解决了此问题。