代码之家  ›  专栏  ›  技术社区  ›  David

如何从Listview(到DataTable)提取/转换信息?

  •  0
  • David  · 技术社区  · 16 年前

    我有一个相对简单的Listview,它突然需要(由于新的需求)将它的“布局”提取到一个DataTable中,这样一个普通的例程就可以将它转换成Excel电子表格,以便于导出。

    一些文本框和文本框与文本框绑定在一起。

    通常,当尝试提取一个特定的值(比如在文本框中输入的值)时,我使用ListViewItem的.FindControl方法。

    For Each objItem As ListViewItem In lvwOptions.Items
        Dim objTextHrsLabor As TextBox = CType(objItem.FindControl("txtHrsOptByLabor"), TextBox)
        decHours = CDec(objTextHrsLabor.Text)
    Next
    

    在ListViewItems的ForEach/Next循环中,我为每个实例的控件启动了一个ForEach/Next循环,但是返回了一些非常奇怪的结果(比如控件中有几个表单元格)。

    我觉得我走错了方向。我只想将格式良好的5行6列的表转换为5行6列的数据表。

    我还有别的路要看吗?

    3 回复  |  直到 16 年前
        1
  •  0
  •   Rune Grimstad    16 年前

    我将查看ListView的底层数据源。

    数据源必须是集合或IEnumerable,并且您应该能够遍历它来构建数据表。

    如果知道所有元素都是同一类型的,那么可以使用第一个元素并使用反射查看其属性,以确定表中应该包含哪些列。然后,可以将DataRows添加到表中,并使用属性名填充列。

        2
  •  0
  •   Brian Mains    16 年前

    我使用这种方法将ListView导出到Excel: http://aspalliance.com/771_CodeSnip_Exporting_GridView_to_Excel

    我知道它处理的是一个GridView,但是我把它改成了ListView(只要底层结构是一个表),它对我来说很好。

    好吧。

        3
  •  0
  •   musefan    14 年前

    listView1.Items[0].SubItems[0].Text 
    

    这会很有帮助,非常简单和容易。您可以根据索引提取信息,并根据需要使用。