将组合框列添加到 winforms 中的数据表
Adding a comboBoxcolumn to datatable in winforms
问题
如何将 comboBoxcolumn 添加到 dataTable 而不仅仅是网格?我尝试将 "Connector Name" 列设置为 comboboxcolumn ,但显然我没有做对。
我有什么(片段):
if (_DtMain.Columns.Count == 0)
{
var cols = new List<DataColumn>();
cols.Add(new DataColumn("PocketName", typeof(string)));
cols.Add(new DataColumn("KeyIndex", typeof(string)));
cols.Add(new DataColumn("SortOrder", typeof(int)));
cols.Add(new DataColumn("ConnectorName", typeof(DataGridViewComboBoxColumn )));
_DtMain.Columns.AddRange(cols.ToArray());
dataGridView1.DataSource = _DtMain.DefaultView;
}
编辑
这是我的新解决方案:
if (_DtMain.Columns.Count == 0)
{
var colPN = new DataGridViewTextBoxColumn();
var colCN = new DataGridViewComboBoxColumn();
var colKI = new DataGridViewTextBoxColumn();
var colSO = new DataGridViewTextBoxColumn();
dgvHeaderEdit.Columns.Add(colPN);
dgvHeaderEdit.Columns.Add(colCN);
dgvHeaderEdit.Columns.Add(colKI);
dgvHeaderEdit.Columns.Add(colSO);
colPN.HeaderText = "Pocket Name";
colPN.DataPropertyName = "Pocket Name";
colCN.HeaderText = "Connector Name";
colCN.DataPropertyName = "Connector Name";
colKI.HeaderText = "Key Index";
colKI.DataPropertyName = "Key Index";
colSO.HeaderText = "Sort Order";
colSO.DataPropertyName = "Sort Order";
_DtMain.Columns.Add(new DataColumn("Pocket Name", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Connector Name", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Key Index", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Sort Order", typeof(int)));
dgvHeaderEdit.AutoGenerateColumns = false;
dgvHeaderEdit.DataSource = _DtMain.DefaultView;
这样使用:
为 Grid 的数据源构建数据表时:
DataTable dt = new DataTable();
dt.Columns.Add("PocketName", typeof(string));
dt.Columns.Add("KeyIndex", typeof(string));
dt.Columns.Add("SortOrder", typeof(int));
dt.Columns.Add("ConnectorName", typeof(int));
dgv.DataSource = dt;
现在为 GridView 创建一个组合框列并为此组合框创建一个数据源。
添加所有值以显示在 dtConnectorSource 的 ComboBox 中
在 ComboBox 中用您需要的值填充 dtConnectorSource。
DataTable dtConnectorSource = new DataTable();
dtConnectorSource.Columns.Add("ConnectorName", typeof(int));
dtConnectorSource.Columns.Add("ConnectorNameDisplay", typeof(String));
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn ();
cmb.DataSource = dtConnectorSource;
cmb.DisplayMember = "ConnectorNameDisplay";
cmb.ValueMember = "ConnectorName";
cmb.DataPropertyName = "ConnectorName";
dgv.Columns.Add(cmb);
问题 如何将 comboBoxcolumn 添加到 dataTable 而不仅仅是网格?我尝试将 "Connector Name" 列设置为 comboboxcolumn ,但显然我没有做对。
我有什么(片段):
if (_DtMain.Columns.Count == 0)
{
var cols = new List<DataColumn>();
cols.Add(new DataColumn("PocketName", typeof(string)));
cols.Add(new DataColumn("KeyIndex", typeof(string)));
cols.Add(new DataColumn("SortOrder", typeof(int)));
cols.Add(new DataColumn("ConnectorName", typeof(DataGridViewComboBoxColumn )));
_DtMain.Columns.AddRange(cols.ToArray());
dataGridView1.DataSource = _DtMain.DefaultView;
}
编辑
这是我的新解决方案:
if (_DtMain.Columns.Count == 0)
{
var colPN = new DataGridViewTextBoxColumn();
var colCN = new DataGridViewComboBoxColumn();
var colKI = new DataGridViewTextBoxColumn();
var colSO = new DataGridViewTextBoxColumn();
dgvHeaderEdit.Columns.Add(colPN);
dgvHeaderEdit.Columns.Add(colCN);
dgvHeaderEdit.Columns.Add(colKI);
dgvHeaderEdit.Columns.Add(colSO);
colPN.HeaderText = "Pocket Name";
colPN.DataPropertyName = "Pocket Name";
colCN.HeaderText = "Connector Name";
colCN.DataPropertyName = "Connector Name";
colKI.HeaderText = "Key Index";
colKI.DataPropertyName = "Key Index";
colSO.HeaderText = "Sort Order";
colSO.DataPropertyName = "Sort Order";
_DtMain.Columns.Add(new DataColumn("Pocket Name", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Connector Name", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Key Index", typeof(string)));
_DtMain.Columns.Add(new DataColumn("Sort Order", typeof(int)));
dgvHeaderEdit.AutoGenerateColumns = false;
dgvHeaderEdit.DataSource = _DtMain.DefaultView;
这样使用: 为 Grid 的数据源构建数据表时:
DataTable dt = new DataTable();
dt.Columns.Add("PocketName", typeof(string));
dt.Columns.Add("KeyIndex", typeof(string));
dt.Columns.Add("SortOrder", typeof(int));
dt.Columns.Add("ConnectorName", typeof(int));
dgv.DataSource = dt;
现在为 GridView 创建一个组合框列并为此组合框创建一个数据源。 添加所有值以显示在 dtConnectorSource 的 ComboBox 中 在 ComboBox 中用您需要的值填充 dtConnectorSource。
DataTable dtConnectorSource = new DataTable();
dtConnectorSource.Columns.Add("ConnectorName", typeof(int));
dtConnectorSource.Columns.Add("ConnectorNameDisplay", typeof(String));
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn ();
cmb.DataSource = dtConnectorSource;
cmb.DisplayMember = "ConnectorNameDisplay";
cmb.ValueMember = "ConnectorName";
cmb.DataPropertyName = "ConnectorName";
dgv.Columns.Add(cmb);