Control.Bindings.Add проблема, исключение, сообщающее мне, что программа не может привязать столбец, который не существует (но он существует) - PullRequest
0 голосов
/ 18 сентября 2010

Когда я пытаюсь использовать следующую строку кода:

cboSite.DataBindings.Add("Text", _dtSite.Select("Site <> 'ALL'"), "Site")

Я получаю следующее исключение:

ИСКЛЮЧЕНИЕ: Невозможно привязать свойство или столбец Сайт в источнике данных. {10} Имя параметра: dataMember

подробности Я подключаюсь к базе данных Access и использую .net 3.5 и пишу код на VB. В этой базе данных у меня есть таблица с именем Sites и столбцом с именем Site, и когда я пытаюсь использовать приведенную выше строку кода, я получаю отмеченное исключение. У меня сложилось впечатление, что я могу явно назвать столбец, который мне нужно использовать в моем элементе управления (поле со списком). Что я делаю не так?

1 Ответ

1 голос
/ 20 сентября 2010

Это связано с тем, что результат, полученный из оператора .Select (), создает выходные данные коллекции DataRows, когда вам нужно привязать к источнику DataTable, который был отфильтрован.Что вы можете сделать, это отфильтровать строки 1-й, поместите отфильтрованные строки в клон исходного DataTable и затем свяжите с отфильтрованным DataTable.Ниже приведен пример кода:

    'Begin by returning an array of DataRows that have been filtered
    Dim filterdRows() As DataRow = _dtSite.Select("Site <> 'ALL'")

    'Clone the original DataTable which will give us an empty one
    'with an identical structure.
    Dim _dtFiltered As DataTable = _dtSite.Clone
    For Each drFiltered As DataRow In filterdRows
        'Import the rwo into the filtered table
        _dtFiltered.ImportRow(drFiltered)
    Next

    'Bind the ComboBox to the filtered DataTable
    cboSite.DataBindings.Add("Text", _dtFiltered, "Site")

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...