Невозможно добавить значения DataTable в GridView - PullRequest
0 голосов
/ 11 января 2012

Вот мой код

 Dim dt As DataTable = New DataTable("Intervenant")
    For Each column As DataControlField In grdvIntervenants.Columns
        dt.Columns.Add(New DataColumn(column.HeaderText))
    Next

    Dim dr As DataRow
    For Each row As GridViewRow In grdvIntervenants.Rows
        dr = dt.NewRow()
        dr.Item(0) = row.Cells(0)
        dr.Item(1) = row.Cells(1)
        dr.Item(2) = row.Cells(2)
        dr.Item(3) = row.Cells(3)
        dr.Item(4) = row.Cells(4)
        dr.Item(5) = row.Cells(5)
        dt.Rows.Add(dr)
    Next

    'add new intervenant
    dr = dt.NewRow()

    dr.Item(0) = Nom
    dr.Item(1) = Prenom
    dr.Item(2) = Courriel
    dr.Item(3) = False
    dr.Item(4) = True
    dr.Item(5) = IdIntervenant

    dt.Rows.Add(dr)


    grdvIntervenants.DataSource = dt
    grdvIntervenants.DataBind()

Я занимаюсь разработкой в ​​ASP.NET, используя VB.NET в качестве фонового кода. Я на vs2008 с Windows 7 Enterprise Edition (если эта информация поможет)

Я только что перезапустил работу с VB.Net и впервые использовал gridView без базы данных, поэтому, возможно, я что-то упустил. По сути, я пытаюсь добавить DataRow (dr) в DataTable (dt) и затем поместить указанный DataTable в Gridview (grdvIntervenants).

Мой первый шаг - взять представление сетки и поместить все его данные в DataTable. Затем я создаю DataRow (dr), который заполняю переменными, и добавляю указанный DataRow в DataTable. После этого я помещаю DataTable в качестве источника данных и связываю GridView.

Проблема в том, что мой GridView показывает строки, но они пусты. Во время отладки я обнаружил, что эта ошибка была рядом со всеми DataRow.Item : "Чтобы оценить индексированное свойство, свойство должно быть квалифицированным, а аргументы должны быть явно предоставлены пользователем" При поиске его в сети я обнаружил, что эта проблема иногда возникает с vb пользователи, но я не смог найти решение своей проблемы.

Я не совсем понял ошибку, поэтому я пробовал много разных способов добавления данных в DataRow, но безрезультатно. Я также попытался добавить колонку другим способом, думая, что проблема с индексами может исходить оттуда, но, опять же, проблема сохраняется. Теперь мне показалось странным, что свойство Item моего DataRow выдает ошибку в кавычках, но я вижу значения в ItemArray объекта DataRow.

Я также обнаружил, что такая же ошибка появляется рядом со свойством столбцов в dataTable.

Когда я пытаюсь получить доступ к данным из источника данных в моем методе rowDatabound с использованием DataBinder, он дает мне нулевые результаты ...

Итак, мой вопрос: что мне не хватает?

1 Ответ

0 голосов
/ 11 января 2012

Скорее всего, ваша проблема в том, что вы используете HeaderText в качестве имени столбца для таблицы данных, но это, вероятно, не правильно.

Возможно, вам следует проверить, является ли каждый столбец BoundField и, если это так, используйте BoundField.DataField в качестве имени столбца DataTable.

Например:

    For Each column As DataControlField In GridView1.Columns
        If TypeOf column Is BoundField Then
            dt.Columns.Add(New DataColumn(DirectCast(column, BoundField).DataField))
        End If
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...