datagridview中自动生成列中的问题 [英] problem in autogenerate column in datagridview

查看:92
本文介绍了datagridview中自动生成列中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我正在使用combobox绑定datagridview,并且创建了一个comboboxcolumn
在datagridview中.每次如果我从combox中选择了不同的值,它将
重新创建另一个新的comboboxcolumn.我设置为autogeneratecolumn = false.仍然无法正常工作,我的代码是


 尝试
    {
        SqlConnection con =  SqlConnection(" );
        con.Open();
        字符串 s = " ;
        字符串 s2 = "  + comboBox1.Text +  " ;

        DataSet ds =  DataSet();
        SqlDataAdapter dd =  SqlDataAdapter(s,con);
        SqlDataAdapter dd1 =  SqlDataAdapter(s2,con);
        SqlCommandBuilder cmb1 =  SqlCommandBuilder(dd);
        SqlCommandBuilder cmb2 =  SqlCommandBuilder(dd1);
        dd.Fill(ds," );
        dd1.Fill(ds," );
        SqlCommand cmd =  SqlCommand(s,con);

        SqlDataReader dr = cmd.ExecuteReader();

        如果(dr.Read())
        {
            dataGridView1.DataSource = ds.Tables [ 0 ];
            dataGridView1.AutoGenerateColumns =  false ;
            //  panel1.Visible = true; 
             .dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque;
             .dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige;
            dataGridView1.Columns [" ].Visible = > false ;


        }
        DataGridViewComboBoxColumn cmb =  DataGridViewComboBoxColumn();
        cmb.HeaderText = " ;
        cmb.Name = " ;
        cmb.DataSource = ds.Tables [" ];
        cmb.DisplayMember = " ;
        cmb.ValueMember = " ;
        dataGridView1.Columns.Add(cmb);

        dataGridView1.DataSource = ds.Tables [ 0 ];
        dataGridView1.AutoGenerateColumns =  false ;
        DataGridViewComboBoxColumn comb1 =  DataGridViewComboBoxColumn();
        comb1.HeaderText = " ;
        comb1.Name = " ;
        comb1.DataSource = ds.Tables [" ];
        comb1.DisplayMember = " ;
        comb1.ValueMember = " ;
        dataGridView1.Columns.Add(comb1);
        dataGridView1.DataSource = ds.Tables [ 0 ];
        dataGridView1.AutoGenerateColumns =  false ;

    }
    捕获(例外)
    {
        MessageBox.Show(ex.Message.ToString());
    }

}



我在comboxselected indexchange事件中编写此代码.

解决方案

在最后三行代码中您缺少Databind()

 dataGridView1.Columns.Add(comb1);
                dataGridView1.DataSource = ds.Tables [ 0 ];
dataGridView1.Databind();
                dataGridView1.AutoGenerateColumns =  false ; 


hi
i am using combobox to bind the datagridview and i am created a comboboxcolumn
in datagridview .everytime if i selected different value from combox it will
recreate the another new comboboxcolumn. i set autogeneratecolumn=false. stillnot working and my code is


    try
    {
        SqlConnection con = new SqlConnection("data source = localhost\\SQLEXPRESS;initial catalog = mgrsch_schools; integrated security = true");
        con.Open();
        string s = "select * from hmloading1 ";
        string s2 = "select *from teacherdetailloading where sub1='"+comboBox1.Text+"' ";

        DataSet ds = new DataSet();
        SqlDataAdapter dd = new SqlDataAdapter(s, con);
        SqlDataAdapter dd1 = new SqlDataAdapter(s2, con);
        SqlCommandBuilder cmb1 = new SqlCommandBuilder(dd);
        SqlCommandBuilder cmb2 = new SqlCommandBuilder(dd1);
        dd.Fill(ds, "hmloading1");
        dd1.Fill(ds, "teacherdetailloading");
        SqlCommand cmd = new SqlCommand(s, con);

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            dataGridView1.DataSource = ds.Tables[0];
            dataGridView1.AutoGenerateColumns = false;
            //panel1.Visible = true;
            this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque;
            this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige;
            dataGridView1.Columns["slno"].Visible = false;


        }
        DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
        cmb.HeaderText = "Prekg";
        cmb.Name = "cmb";
        cmb.DataSource = ds.Tables["teacherdetailloading"];
        cmb.DisplayMember = "name";
        cmb.ValueMember = "name";
        dataGridView1.Columns.Add(cmb);

        dataGridView1.DataSource = ds.Tables[0];
        dataGridView1.AutoGenerateColumns = false;
        DataGridViewComboBoxColumn comb1 = new DataGridViewComboBoxColumn();
        comb1.HeaderText = "Lkg";
        comb1.Name = "comb1";
        comb1.DataSource = ds.Tables["teacherdetailloading"];
        comb1.DisplayMember = "name";
        comb1.ValueMember = "name";
        dataGridView1.Columns.Add(comb1);
        dataGridView1.DataSource = ds.Tables[0];
        dataGridView1.AutoGenerateColumns = false;

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }

}



i write this code in comboxselected indexchange event.

if anyone have any idea helpme.

解决方案

You are missing the Databind() in the last three lines of code

dataGridView1.Columns.Add(comb1);
                dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Databind();
                dataGridView1.AutoGenerateColumns = false;


这篇关于datagridview中自动生成列中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆