Перебор данных ListView - PullRequest
       12

Перебор данных ListView

2 голосов
/ 18 декабря 2010

У меня есть ListView, который связан с DataTable. Я хотел бы перебрать строки DataTable и получить доступ к их данным. Я решил, что для этого я бы просто перебрал ListViewDataItems в ListView. Чтобы проверить, что я правильно обращаюсь к данным, я попробовал следующий код, который должен просто напечатать строку в столбце 0 для каждой строки.

for (int i = 0; i < MyListView.Items.Count; i++)
{
    ListViewDataItem item = MyListView.Items[i];
    DataRow row = (DataRow) item.DataItem;
    Response.Write(row[0]);
}

Однако ничего не печатается. Чтобы убедиться, что ListView не пустой (чего не должно быть, поскольку данные правильно отображаются на моей странице aspx), я попытался сделать следующее:

Response.Write(MyListView.Items.Count);

Это печатает число 16, которое является правильным, поскольку в моем ListView есть 16 строк. Я предполагаю, что я просто не получаю доступ к данным правильно. Буду признателен за понимание этого вопроса.

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

Я решил, что лучшим решением будет просто перебирать данные непосредственно в DataTable, а не в ListViewDataItems.

for (int i = 0; i < myTable.Rows.Count; i++)
{
    for (int j = 0; j < myTable.Columns.Count; j++)
    {
        object data = data.Rows[i][j];
        // do stuff with data
    }
}
1 голос
/ 18 декабря 2010

Лучший способ - остановиться на точке останова (в строке DataRow row = (DataRow) item.DataItem;) и просто проверить, что у вас есть.

например, как здесь: http://msdn.microsoft.com/en-us/library/ms173083(v=VS.90).aspx

0 голосов
/ 06 мая 2013

Для тех, кто все еще ищет правильный ответ на этот вопрос, будет работать следующий код (VB.NET):

Dim di as ListViewDataItem

For Each di in MyListView.Items
    Response.Write(CType(di.FindControl("ExampleLabel"), Label).Text)
Next

Просто замените строку Response.Write тем, что вы хотели сделать с каждым элементом списка. Строка примера ищет элемент управления с именем ExampleLabel, возвращает его обратно в метку и записывает текстовое значение на страницу.

Легко адаптируется к C # для любого опытного (не я, увы).

...