[英]How to programmatically change combobox selected item in datagridview?
[英]how to change added Combobox item in datagridview when Data Source changes?
我在from中添加了兩個datagridview
。 名為lotDetailDataGridView
的datagridview1
及其名為Quality
的列從 sql 數據庫中獲取數據,名為pieceDetailDataGridView
的datagridview2
及其名為quality
的列是 combobox 列,並從lotDetailDataGridView
的列Quality
中獲取項目,如下所示:
我這樣做是為了獲取lotDetailDataGridView
列Quality
的項目:
private void addQualityToCombo()
{
string[] val = new string[lotDetailDataGridView.Rows.Count - 1];
for (int i = 0; i < lotDetailDataGridView.Rows.Count - 1; i++)
{
if (lotDetailDataGridView[1, i].Value != null)
{
val[i] = lotDetailDataGridView[1, i].Value.ToString();
pieceDetailQualityColumn.DataSource = val;
}
}
}
private void lotDetailDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
addQualityToCombo();
}
我想要的只是當我更改pieceDetailDataGridView's
Quality
lotDetailDataGridView's
quality
自動更新。 請看一下我在上面添加的參考。 我這樣做的嘗試給出了一個錯誤。 請指導我,謝謝。
您可以嘗試使用 dataGridView2_EditingControlShowing 事件和 ComboBox_SelectedValueChanged 事件來更新列。
這是您可以參考的代碼示例。
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns.Add("column1","Name");
var list = Getlist();
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "Quantity";
cmb.Name = "cmb";
cmb.MaxDropDownItems = 6;
cmb.DataSource = list;
cmb.DataPropertyName = "comboboxValue";
dataGridView1.Columns.Add(cmb);
dataGridView1.Columns.Add("column2", "Weight");
DataGridViewComboBoxColumn cmb1 = new DataGridViewComboBoxColumn();
cmb1.HeaderText = "Quantity";
cmb1.Name = "cmb";
cmb1.MaxDropDownItems = 6;
cmb1.DataSource = list;
cmb1.DataPropertyName = "comboboxValue";
dataGridView2.Columns.Add(cmb1);
dataGridView1.AllowUserToAddRows = false;
}
public List<string> Getlist()
{
List<string> list = new List<string>();
string connstr = connstr";
SqlConnection connection = new SqlConnection(connstr);
connection.Open();
SqlCommand command = new SqlCommand("select Quantity from Product", connection);
SqlDataReader reader = command.ExecuteReader();
while(reader.Read())
{
string result = reader[0].ToString();
list.Add(result);
}
connection.Close();
return list;
}
private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
}
private void dataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView2.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
{
ComboBox comboBox = e.Control as ComboBox;
comboBox.SelectedValueChanged -= ComboBox_SelectedValueChanged;
comboBox.SelectedValueChanged += ComboBox_SelectedValueChanged;
}
}
private void ComboBox_SelectedValueChanged(object sender, EventArgs e)
{
var text = ((ComboBox)sender).Text;
int rowindex = dataGridView2.CurrentCell.RowIndex;
int count = dataGridView2.RowCount;
int rowcount = dataGridView1.RowCount;
if (count != rowcount)
{
dataGridView1.Rows.Add(1);
}
dataGridView1.Rows[rowindex].Cells[1].Value = text;
}
結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.