2015-03-01 4 views
1

Когда я нажал на ячейку в моем DataGridView, значения передаются в моих текстовых блоках, но у меня есть проблема, когда дело доходит до моего списка со списком, оно просто остается нулевым. Я уже пробовал SelectedItem и SelectedIndex, но он остается нулевым. Я сумел поместить значение в моем выпадающем списке с помощью SelectedText, но как только я обновил свою базу данных, я получаю NullReferenceException в моем поле со списком, вот мой код:Передайте выбранное значение в DataGridView в ComboBox

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); 
     } 
    } 
+0

, когда вы наводите курсор на строку row.Cells ["section"]. Value.ToString() 'в отладчике или QuickWatch, каково значение ..? – MethodMan

+0

Что делать, если вы измените этот 'cboSection.SelectedText = row.Cells [" section "]. Value.ToString();' на следующий 'cboSection.SelectedIndex = row.Cells [" section "]. Значение;' – MethodMan

+0

I получить ошибку не может неявно преобразовать строку в объект. –

ответ

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; 
} 

Отредактировано для отображения условного выбора или добавления.

Окончательный править ... До.

+0

Я пробовал то, что вы сказали, и не получил никаких ошибок, но после запуска моей программы, combobox все равно null после того, как я щелкнул элемент в datagridview –

+0

Итак, элемент, который вы тестируете, скорее всего не входит в список. Вы должны проверить индекс, чтобы увидеть, есть ли его в списке. Если его нет, добавьте его и выберите. – Serialize

+0

См. Мое редактирование выше о том, как создать/выбрать – Serialize

0

Попытка ComboBox.Text свойство:

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

Смежные вопросы