2015-03-17 2 views
0

Я работаю с Win формы и VB.NetПроверить Listbox возвращение System.DataRow - VB.Net

Private Sub LoadPackageNames() 
    lbPackageName.ValueMember = "Value" 
    lbPackageName.DisplayMember = "Label" 
    lbPackageName.DataSource = ReportRunner.GetReportPackages() 
End Sub 

Private Sub lbPackageName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbPackageName.SelectedIndexChanged 
    lbRunTime.DisplayMember = "Label" 
    lbRunTime.ValueMember = "Value" 
    lbRunTime.DataSource = ReportRunner.GetReportTimes(lbPackageName.SelectedValue) 


    clbReportName.DisplayMember = "Label" 
    clbReportName.ValueMember = "Value" 
    clbReportName.DataSource = ReportRunner.GetReportNames(lbPackageName.SelectedValue)  
End Sub 

код прост. Нажав на различные параметры в списке lbPackageName, я получаю разные результаты. Иногда я получаю значения, ожидаемые в clbReportName, иногда я получаю System.Data.DataRow. lbPackageName и lbRunTimes, на данный момент, всегда заполняются правильно.

Есть ли что-то иное в чек-листах?

enter image description here

Вот запрос, который получает возвращенное как DataTable

SELECT A.ReportName AS Label, A.ReportName AS Value 
FROM ReportRunnerPackageToReportAssociation A 
WHERE A.PackageName = @PackageName 

Интересная находка: Иногда DisplayMember создается обратно пустым? enter image description here

+0

* Где * и * как * вы получаете результаты? Как связан список ваших «отчетов»? – Crono

+0

Когда вызывается форму загрузки LoadPackageNames, я вижу результаты в самой форме – Mike

+1

Вам нужно будет показать нам функцию GetReportNames. – LarsTech

ответ

0

В ответ на ваш вопрос:

Есть ли что-то другое о проверке списков?

Да.

При привязке к свойству «ValueMember» отмеченного списка значение, которое связано, должно быть логическим.

У вас не может быть значения «2/18/2013 3:21 PM», это должно быть «true» или «false».

Таким образом, вы, вероятно, захотите привязать «DisplayMember» к «Label» и получить индексы выбранных элементов для получения требуемых данных. Или, в вашем случае, поскольку метка и значение являются точными данными «A.ReportName», вы можете уйти с получением текста проверенных элементов во время события.

Существует хороший пример привязки к проверяемому списку here.