很疑惑,百度了下,越看越不懂,有的人说用Combobox直接添加进DataGridView中,我不需要这么高端,我只需要自带的控件添加进去,可是我没搞定,希望大侠给点指点
首先
1.拖控件。。。DataGridView、GroupBox等等等,此处省略500字。。。
2.根据数据库的字段来编辑字段,因为我知道里面会包含很多控件,单单的Select语句出来的数据源已经无法阻止我。

3.界面搭建好了,去后台代码连接数据库取数据源
private void Bind2(int Areacode2)
{
SqlConnection scConnection = new SqlConnection(connstr); //建立Connection
SqlCommand scCommand2 = scConnection.CreateCommand(); //建立Command
scCommand2.CommandText = "select Id,Shipdate,Shipcompany,Company,Portship,Shipday,[20],[40],HQ,Dodate,Endday,Tax,Addcharge,Mark,Areacode1,Areacode2 from zheng where [email protected] and [email protected]";
scCommand2.Parameters.AddWithValue("@Areacode1", area);
scCommand2.Parameters.AddWithValue("@Areacode2", Areacode2);
sdaAdapter2 = new SqlDataAdapter(scCommand2); //建立Adapter
scbBuilder2 = new SqlCommandBuilder(sdaAdapter2); //该对象负责生成用于更新数据库的SQL语句,不必自己创建这些语句
dsSet.Clear(); //使用容器前先清空容器
sdaAdapter2.Fill(dsSet, "zheng"); //填充数据
bind2 = this.BindingContext[dsSet.Tables["zheng"]];
dataGridView2.DataSource = dsSet.Tables["zheng"]; //数据源绑定
}
自己写了个方法取出DataTable数据源并且绑定到DataGridView 到这里全部正确。
然后问题来了,我绑定DataGridViewTextBoxColumn 的字段都字段名和 DataSouce名字一致,
但是DataGridViewComboBoxColumn 我在图形视图没有设置,导致DataGridView里多出字段来。。。
我需要的是数据库 SELECT出来的字段正好是我DataGridView里的字段,而DataGridViewTextBoxColumn这列显示的也正好是我数据库里的查出来的值,当我鼠标点击下拉框的时候,DataGridViewTextBoxColumn 该列再出现一个数据源,是下拉数据源,比如说
{{value:男,index:0},{value:女,index:1},{value:未知,index:3}}
怎么做,也就是有两数据源的概念

------解决思路----------------------
贴一张图

------解决思路----------------------
先不管你绑定的东西是哪里来的
DataTable temptable = new DataTable();
temptable.Columns.Add("index");
temptable.Columns.Add("value");
((DataGridViewComboBoxColumn)setteidialog.grid_homon_saki.Columns[1]).Resizable = DataGridViewTriState.False;
for (int no = 0; no < 3; no++)
{
temptable.Rows.Add((no).ToString(), string.Format("{0} {1}", (no).ToString(), moji_saki_kubun(no)));
}
((DataGridViewComboBoxColumn)setteidialog.grid_homon_saki.Columns[1]).DataSource = temptable;
((DataGridViewComboBoxColumn)setteidialog.grid_homon_saki.Columns[1]).DisplayMember = "value";
((DataGridViewComboBoxColumn)setteidialog.grid_homon_saki.Columns[1]).ValueMember = "index";
moji_saki_kubun 里 写的就是你 获取到的 所有下拉框绑定的东西
取初始值的时候 grid_homon_saki.Rows[i].Cells[1].Value = s.value.ToString(); 直接写就好
dt[i].tosting是你从数据库 明确值的那个
然后 更新就和TEXT形式的GRID什么的也就都一样了。