首先我在datagridview上手动,编辑添加一列combox,其他的列也是手动编辑的
我在form里有个隐藏的combox1,是我从后台SQL里查出来的。我想把这个隐藏的combox1的值给我的datagridview里的combox。
datagridview出来的每一行数据都有combox这一列。我本来是这样想的
DataTable a =(DataTable)combox1.DataSource;
datagridview.Columns["move_place"].DataSource=a;//哈哈,这样最简单直接这一列全是一样的的了。但是没有这样的方法不知道怎么实现!
我在form里有个隐藏的combox1,是我从后台SQL里查出来的。我想把这个隐藏的combox1的值给我的datagridview里的combox。
datagridview出来的每一行数据都有combox这一列。我本来是这样想的
DataTable a =(DataTable)combox1.DataSource;
datagridview.Columns["move_place"].DataSource=a;//哈哈,这样最简单直接这一列全是一样的的了。但是没有这样的方法不知道怎么实现!
DataTable a =(DataTable)combox1.DataSource;
这样好像是不行的……你干嘛不在给combox1.DataSource付值的时候,把数据源保存为全局变量!?
跟combox一樣的寫呀。
{
dataTable = wp.ResDataSet.Tables["place"]; //指定下拉列表的显示和值,绑定数据
move_in.DisplayMember = "place_name";
move_in.ValueMember = "place_id";
if (dataTable != null)
{
move_in.DataSource = dataTable.DefaultView;
}
}move_in是combox,这个我都写好了。但是datagridview里的combox不知道怎么写?
0xff 说的:循环写?那么就循环写,但是怎么赋值呀。
{
DataGridViewComboBoxColumn column =
new DataGridViewComboBoxColumn();
{
column.DataPropertyName = ColumnName.TitleOfCourtesy.ToString();
column.HeaderText = ColumnName.TitleOfCourtesy.ToString();
column.DropDownWidth = 160;
column.Width = 90;
column.MaxDropDownItems = 3;
column.FlatStyle = FlatStyle.Flat;
}
return column;
}private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
{
{
comboboxColumn.DataSource = RetrieveAlternativeTitles();
comboboxColumn.ValueMember = ColumnName.TitleOfCourtesy.ToString();
comboboxColumn.DisplayMember = comboboxColumn.ValueMember;
}
}private DataTable RetrieveAlternativeTitles()
{
return Populate("SELECT distinct TitleOfCourtesy FROM Employees");
}string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost";private DataTable Populate(string sqlCommand)
{
SqlConnection northwindConnection = new SqlConnection(connectionString);
northwindConnection.Open(); SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command; DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(table); return table;
}
要是按照楼上的方法我早就写出来了
//测试
if (!View.Columns.Contains("move_place"))
{
DataGridViewComboBoxColumn dgvcbc = new DataGridViewComboBoxColumn();
dgvcbc.Name = "move_place";
dgvcbc.HeaderText = "新库位";
dgvcbc.DataSource = dataTable;
dgvcbc.ValueMember = "place_id";
dgvcbc.DisplayMember = "place_name";
dgvcbc.DataPropertyName = "move_place";
this.View.Columns.Add(dgvcbc);
this.View.Columns["move_place"].ReadOnly = false;
//dgvcbc.DisplayIndex = 20;
}
问题都解决了~靠人不如靠己啊
http://blog.csdn.net/netcoder/archive/2007/09/05/1772633.aspx