将 DataGridView 中的选定值传递给 ComboBox
Pass the Selected Value in DataGridView to ComboBox
当我单击我的 DataGridView 中的一个单元格时,值被传递到我的文本框,但是当涉及到我的组合框时我遇到了一个问题,它只是保持为空。我已经尝试过 SelectedItem 和 SelectedIndex 但它保持为空。我已经设法使用 SelectedText 将值放在我的组合框中,但是一旦我更新了我的数据库,我的组合框中就会出现 NullReferenceException,这是我的代码:
private void dgvStudentRecord_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dgvStudentRecord.Rows[e.RowIndex];
txtStudNum.Text = row.Cells["studentId"].Value.ToString();
txtStudName.Text = row.Cells["studentName"].Value.ToString();
cboSection.SelectedText = row.Cells["section"].Value.ToString();
numPrelim.Value = Convert.ToDecimal(row.Cells["prelim"].Value);
numMidterm.Value = Convert.ToDecimal(row.Cells["midterm"].Value);
numFinals.Value = Convert.ToDecimal(row.Cells["finals"].Value);
}
}
按照您接近它的方式来做它会有些头疼,因为 ComboBox 根本不能很好地处理意外值,而 SelectText 属性 它没有按照您的想法去做(当您设置 属性) 时,它不会 select 从其内部列表中获取一个项目(参见:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext(v=vs.110).aspx)
你最好写这样的东西:
int index = cboSection.FindString(row.Cells["section"].Value.ToString());
if(index > -1)
{
cboSection.SelectedIndex = index;
}
else
{
object newSection = row.Cells["section"].Value.ToString();
cboSection.Items.Add(newSection);
cboSection.SelectedItem = newSection;
}
已编辑以显示条件 select 或添加。
最终编辑...呵呵。
试试这个,ComboBox.Text
属性
combobox1.Text=row.Cells[cellIndex].Value.ToString();
当我单击我的 DataGridView 中的一个单元格时,值被传递到我的文本框,但是当涉及到我的组合框时我遇到了一个问题,它只是保持为空。我已经尝试过 SelectedItem 和 SelectedIndex 但它保持为空。我已经设法使用 SelectedText 将值放在我的组合框中,但是一旦我更新了我的数据库,我的组合框中就会出现 NullReferenceException,这是我的代码:
private void dgvStudentRecord_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dgvStudentRecord.Rows[e.RowIndex];
txtStudNum.Text = row.Cells["studentId"].Value.ToString();
txtStudName.Text = row.Cells["studentName"].Value.ToString();
cboSection.SelectedText = row.Cells["section"].Value.ToString();
numPrelim.Value = Convert.ToDecimal(row.Cells["prelim"].Value);
numMidterm.Value = Convert.ToDecimal(row.Cells["midterm"].Value);
numFinals.Value = Convert.ToDecimal(row.Cells["finals"].Value);
}
}
按照您接近它的方式来做它会有些头疼,因为 ComboBox 根本不能很好地处理意外值,而 SelectText 属性 它没有按照您的想法去做(当您设置 属性) 时,它不会 select 从其内部列表中获取一个项目(参见:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext(v=vs.110).aspx)
你最好写这样的东西:
int index = cboSection.FindString(row.Cells["section"].Value.ToString());
if(index > -1)
{
cboSection.SelectedIndex = index;
}
else
{
object newSection = row.Cells["section"].Value.ToString();
cboSection.Items.Add(newSection);
cboSection.SelectedItem = newSection;
}
已编辑以显示条件 select 或添加。
最终编辑...呵呵。
试试这个,ComboBox.Text
属性
combobox1.Text=row.Cells[cellIndex].Value.ToString();