gpt4 book ai didi

c# - 将 DataGridView Column 更改为 DataGridViewComboBoxColumn 入站 DataGridView

转载 作者:行者123 更新时间:2023-12-04 02:26:46 24 4
gpt4 key购买 nike

我有一个绑定(bind)到 DataTable 的 DataGridView,我使用 SQLiteDataAdapter 来更新一个 SQLite 数据库。我正在尝试将其中一列设为 DataGridViewComboBoxColumn,但尽管我可以在其上放置项目并更改其单元格值,但我无法再通过 DataAdapter 更新它。

我在加载 DataGridView 后执行此操作:

DataGridViewComboBoxColumn cbCol = new DataGridViewComboBoxColumn();
dataGridView1.Columns.Insert(2, cbCol);
dataGridView1.Columns[2].HeaderText = dataGridView1.Columns[3].HeaderText;
dataGridView1.Columns[3].Visible = false;

string[] cbList = new[] {"item1","item2"};

foreach (string str in cbList)
{
cbCol.Items.Add(str);
}

for (int i = 0 ; i<= dataGridView1.Rows.Count - 1; i++)
{
dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i].Cells[3].Value;
}

问题是 ComboBoxColumn 未绑定(bind)到 DataTable,我必须在运行 DataAdapter.Update 之前检查更改并修改隐藏列。

有什么办法可以避免这种情况吗?完美的场景应该是这样的:

    private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
if (columnadded.headertext == "xxx")
{
//Then this is column is the same but in a ComboBox format.
//The ComboBoxColumn, when added, must show the same values and have
//the same binding as if if was the regular column.
}
}

最佳答案

创建 DataGridViewComboBoxColum,将其添加到网格并绑定(bind)数据。如果您将列的 DataPropertyName 属性设置为数据库列 ID,那么当您的数据被绑定(bind)时,该数据列将被绑定(bind)到您的网格列。 DataGridView 将自动生成其他列(如果您设置了 AutoGenerateColumns=true)。将第二个数据源绑定(bind)到组合框列本身。

DataGridViewComboBoxColumn col1 = new DataGridViewComboBoxColumn ();
col1.Name = //name of the column
col1.HeaderText = //header text of the column
col1.DataPropertyName = //db column id
col1.DataSource = // datasource for combo
dataGridView1.Columns.Add(col1);

dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = // your datasource

关于c# - 将 DataGridView Column 更改为 DataGridViewComboBoxColumn 入站 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com