将DataGridView中的Selected Value传递给ComboBox

时间:2015-03-01 20:24:24

标签: c# datagridview combobox

当我点击我的DataGridView中的一个单元格时,这些值会在我的文本框中传递,但是当我遇到组合框时我遇到了问题,它只是保持为空。我已经尝试过SelectedItem和SelectedIndex,但它仍然是null。我已经设法使用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);
        }
    }

2 个答案:

答案 0 :(得分:1)

你接近它时会有一些令人头痛的事情,因为ComboBox根本不能很好地处理意外的值,而SelectText属性它没有做你认为它做的事情(它没有选择一个项目来自设置该属性时的内部列表)(参见: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;
}

编辑以显示条件选择或添加。

最后编辑... Doh。

答案 1 :(得分:0)

试试这个,ComboBox.Text属性

 combobox1.Text=row.Cells[cellIndex].Value.ToString();