datagridview中自动生成列中的问题 [英] problem in autogenerate column in datagridview
本文介绍了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屋!
查看全文