2010-09-25 3 views
1

У меня есть динамический datatable, созданный из базы данных. Я хочу добавить новую строку (пробел), поэтому есть возможность ничего не выбирать в combobx. Все работает нормально, не добавляя новую строку. Но когда я добавляю новую строку, combobox ничего не отображает. Что мне не хватает?Добавить новую строку в существующий динамический datatable

Вот код

Dim DT As New DataTable 

DT = DS.Tables("CallStatus") 
Dim drNewRow As DataRow = DT.NewRow 

'Add new row 
drNewRow.Item("CampaignCallStatusID") = "" 
drNewRow.Item("CampaignCallStatus") = "" 
DT.Rows.Add(drNewRow) 
DT.AcceptChanges() 

'Fill combobox 
With cboCallStatus 
    .DataSource = DT 
    .DisplayMember = "CampaignCallStatus" 
    .ValueMember = "CampaignCallStatusID" 
End With 

ответ

4

Я нашел решение. Я использовал метод InsertAt и поместил строку вверху.

Dim DT As New DataTable 
DT = DS.Tables("CallStatus") 
Dim drNewRow As DataRow = DT.NewRow 
DT.Rows.InsertAt(drNewRow, 0) ' <== This is the solution 
DT.AcceptChanges() 

With cboCallStatus 
    .DataSource = DT 
    .DisplayMember = "CampaignCallStatus" 
    .ValueMember = "CampaignCallStatusID" 
End With 
cboCallStatus.Refresh() 
+0

Не могли бы вы убрать исходный код для уценки. –

+0

Является ли решение InsertAt() или это cboCallStatus.Refresh()? У вас этого не было в исходном вопросе. –

+0

Решение: InsertAt() – Troels

0

В вашем примере CampaignCallStatus для пустой строки пустой поэтому дисплей в выпадающем списке будет пустым. Если вы считаете, что одно из значений базы данных должно отображаться в записи, которую вы сейчас показываете, измените пустую строку CampaignCallStatus на значение (например, Debug), чтобы подтвердить, что пустая строка отображается.

Скорее всего, причина, по которой пустая строка отображается в поле со списком, связана с тем, что CampaignCallStatusID не является тем же типом, что и тип базы данных для CampaignCallStatusID. Попробуйте изменить значение пустой строки с "" на 0.

+0

Благодарим за ответы. Я нашел решение. – Troels

+0

Спасибо. Я пытался. Не работает. – Troels

0

Вы можете попробовать выполнить итерацию по всем нужным строкам и добавить их вручную в ComboBox.
Пример выглядит следующим образом:

ComboBox.Items.Clear() 
For Each dr as DataRow in DT.Rows 
    ComboBox.Items.Add(dr("col1").ToString()) 
Next 

Это гарантирует работу при связывании данных не удается.

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