Visual Collection,获取所有记录,不仅当前显示在网格控件上

时间:2012-02-20 15:08:00

标签: visual-studio-lightswitch

我正在尝试将Visual Collection中的所有记录导出为ex​​cel。

我的代码如下:

Imports System.Runtime.InteropServices.Automation

Namespace LightSwitchApplication

    Public Class Assignacions_GR_a_DPT_o_IR_manuals

        Private Sub ExportacioExcel_Execute()
            Try
                ...

                For Each GR In Me.A_LIGHTSWITCH_QUERY
                    rowCount += 1
                    excel.Cells(rowCount, 1).Value = GR.ToString

但目前仅A_LIGHTSWITCH_QUERY显示网格中的记录已导出。 有没有办法获取所有查询记录?

代码在屏幕命令栏执行代码中写入。

EDITED

关于你的观点1,3在Yann回答:

屏幕有2个查询:MAIN_QUERY和LOOKUP_QUERY。

第一个MAIN_QUERY绑定到网格。

LOOKUP_QUERY是查询MAIN_QUERY字段值的查询(自动完成BOX上的选项)。

对于每个循环迭代LOOKUP_QUERY:

For Each GR In Me.LOOKUP_QUERY

仅从循环中检索屏幕中显示的LOOUP_QUERY项目。

示例:

MAIN_QUERY = ORDER LINE (QTY, Product, Order, ...)
LOOKUP_QUERY = PRODUCT (NAME, ...)

For Each P In Me.PRODUCT

Only retrieve product that appear in selected order, I need ALL products.

请注意,我可以停用网页,但如果order每个产品不包含至少一行,则导出时会遗漏某些产品。

3 个答案:

答案 0 :(得分:2)

Matt EvansVisual Studio LightSwitch - General Questions论坛上回答:

  

您想要查看与数据对应的实体集   服务器。 VisualCollection是网格的后备存储   在屏幕上。

     

如果您的内部数据库中有一个名为" Customer"的实体   (ApplicationData)这将向客户展示:

for each c in Me.Dataworkspace.ApplicationData.Customers

    rowCount += 1
    excel.Cells(rowcount, 1).Value = c.Name

答案 1 :(得分:1)

如果您使用包含参数的查询来填充网格,并且您已启用分页,那么网格将随时只有一个“页面”数据。这就是为什么你没有得到所有的记录。

  1. 最简单的方法是禁用集合上的分页,但当然如果有大量记录,那么这样做可能不是一个好主意。然后你又想要导出所有的记录,所以无论你是否将它们分页,它们都会被拉到客户端。

  2. 另一种方法是以编程方式对代码中的页面进行排序(但您也可以使用方法一)。

  3. 或者您可以使用填充网格的相同查询,但是在代码中而不是使用网格集合(并且再次将所有记录拉到客户端)。

    < / LI>

答案 2 :(得分:1)

Yann,我知道这已经过了一段时间,但我只想澄清一件事。如果我需要遍历此网格查询中的每个记录(具有分页),我可以执行以下任一操作:

  1. 创建另一个屏幕查询(使用相同的过滤器但没有分页)并将其用于迭代
  2. 转到EntitySet(即DataWorkspace.ApplicationData.TableName),应用适当的过滤器并从那里迭代
  3. 感谢您对LS的所有贡献。