迭代 ListView 数据

Posted

技术标签:

【中文标题】迭代 ListView 数据【英文标题】:Iterating over ListView data 【发布时间】:2010-12-17 21:13:09 【问题描述】:

我有一个绑定到 DataTable 的 ListView。我想遍历 DataTable 的行并访问它们的数据。我想,要做到这一点,我只需遍历 ListView 中的 ListViewDataItems。为了测试我是否正确访问数据,我尝试了以下代码,它应该只在每行的第 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 行。我猜我只是没有正确访问数据。我希望能对此有所了解。

【问题讨论】:

【参考方案1】:

最好的方法是在断点处停止(在 DataRow row = (DataRow) item.DataItem; 行)并简单地检查你有什么。

例如像这里:http://msdn.microsoft.com/en-us/library/ms173083(v=VS.90).aspx

【讨论】:

ListViewDataItem 项似乎被设置为空。【参考方案2】:

我认为最好的解决方案是直接在 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
    

【讨论】:

【参考方案3】:

对于仍在寻求该问题正确答案的任何人,以下代码都可以使用 (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# 的人都可以轻松适应 C#(不是我,唉)。

【讨论】:

以上是关于迭代 ListView 数据的主要内容,如果未能解决你的问题,请参考以下文章

听说-- 迭代

如何在 Eclipse 中拆分字符串并将项目添加到 ListView(用于循环/迭代)? [关闭]

如何在 Android Studio 中创建动态 ListView

Django通用ListView两个型号

如何得到listview中有多少列数据?

Android 怎样将一组json数据的key value对应的放入到listview中显示两列