Visual Collection, получить все записи, а не только в настоящее время отображается на сетке управления - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь экспортировать ВСЕ записи из Visual Collection в Excel.

Мой код выглядит так:

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 в ответе Янна:

На экране есть 2 запроса: MAIN_QUERY и LOOKUP_QUERY.

Первый, MAIN_QUERY, привязан к сетке.

LOOKUP_QUERYявляется запросом для поиска значений для поля MAIN_QUERY (выбор в поле автозаполнения).

для каждого цикла повторяется по LOOKUP_QUERY:

For Each GR In Me.LOOKUP_QUERY

и извлекаются только те элементы LOOUP_QUERY, которые отображаются на экранеfrom loop.

Пример:

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 ]

2 голосов
/ 21 февраля 2012

Ответ Мэтт Эванс на Visual Studio LightSwitch - Общие вопросы форум:

вы хотите посмотреть на набор сущностей, который соответствует данным на сервер. VisualCollection является резервным хранилищем для сеток на экране.

если у вас есть сущность с именем «Клиент», в вашей внутренней базе данных (ApplicationData) это покажет клиентам:

for each c in Me.Dataworkspace.ApplicationData.Customers

    rowCount += 1
    excel.Cells(rowcount, 1).Value = c.Name
1 голос
/ 07 мая 2014

Янн, я знаю, что это было давно, но я просто хочу уточнить одну вещь.Если мне нужно перебрать каждую запись в этом сеточном запросе (который имеет нумерацию страниц), я могу выполнить одно из следующих действий:

  1. Создать другой экранный запрос (с такими же фильтрами, но без нумерации страниц) и использовать его дляитерация
  2. Перейдите к EntitySet (т.е. DataWorkspace.ApplicationData.TableName), примените соответствующие фильтры и выполните итерацию оттуда

Спасибо за ваш вклад в LS.

1 голос
/ 21 февраля 2012

Если вы используете запрос, который имеет параметры для заполнения вашей сетки, и вы включили разбиение на страницы, тогда в сетке будет только одна «страница» данных в любое время.Вот почему вы не получаете ВСЕ записи.

  1. Самый простой способ - отключить разбиение на страницы в коллекции, но, конечно, при большом количестве записей это может бытьхорошая идея сделать это.С другой стороны, вы все равно хотите экспортировать все записи, чтобы они все были перетащены на клиент, независимо от того, выполняете ли вы их страницы или нет.

  2. Другой способ заключается в программной последовательностистраниц в вашем коде (но вы также можете сделать метод один).

  3. Или вы можете использовать тот же запрос, который заполняет сетку, но в коде вместо использования коллекции сетки (&опять вы все еще тянете все записи клиенту).

...