我有一个相对简单的Listview,它突然需要(由于新的需求)将它的“布局”提取到DataTable中,以便一个通用的例程可以将其转换为Excel电子表格以便导出。
ItemTemplate只是一系列表格行,其中包含一些文本、数据绑定标签和单元格中带有验证器的文本框。
通常,当试图提取一个特定值(比如输入到文本框中的值)时,我会使用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列的数据表。
有没有其他我应该考虑的途径?
发布于 2010-01-04 13:40:03
我将查看ListView的底层数据源。
数据源必须是集合或IEnumerable,并且您应该能够对其进行迭代以构建数据表。
如果您知道所有元素都属于同一类型,则可以使用第一个元素,并使用反射查看其属性,以确定表中应包含哪些列。然后,您可以将DataRows添加到表中,并使用属性名称填充列。
这可能比迭代生成的ListView的html更快。
发布于 2010-01-04 13:42:03
我使用这种方法将ListView导出到Excel:http://aspalliance.com/771_CodeSnip_Exporting_GridView_to_Excel。
我知道它处理的是一个GridView,但我将它改造成了一个ListView (只要底层结构是一个表),它对我来说工作得很好。
HTH。
发布于 2010-09-03 00:48:23
你可以使用..
listView1.Items[0].SubItems[0].Text
这将是有帮助的,非常简单和容易的。你可以在索引的基础上提取信息,并随心所欲地使用。
https://stackoverflow.com/questions/1999535
复制相似问题