Несколько сеток с вкладками, но записывать информацию только со ссылкой на сетку на первой вкладке

У меня есть форма, созданная на x ++ (formBuild), и мне удалось отобразить разные сетки на разных вкладках. Однако, когда я щелкаю правой кнопкой мыши информацию о записи в любой из сеток, кроме первой, детали относятся к первой сетке. Например. Вторая строка сетки 2, когда я делаю информацию о записи, на самом деле является второй строкой сетки 1.

Во-первых, все сетки на самом деле используют одну и ту же таблицу, просто имея разные диапазоны запросов для каждой.

Есть способ исправить это?

Добавлены фрагменты кода

Делаем сетку:

for (counter = 0; counter < locations.lastIndex(); counter++)
{
    formBuildDatasource = form.addDataSource(tableStr(SomeTable));
    formBuildTabPageControl = formBuildTabControl.addControl(FormControlType::TabPage, locations.value(counter+1));
    formBuildTabPageControl.caption(locations.value(counter+1));
    formBuildGridControl = formBuildTabPageControl.addControl(FormControlType::Grid, locations.value(counter+1));
    formBuildGridControl.allowEdit(0);
    formBuildGridControl.dataSource(formBuildDatasource);
    formBuildGridControl.height(500,-1);
    formBuildGridControl.width(550,-1);
    formBuildGridControl.addDataField(formBuildDatasource.id(), fieldNum(SomeTable, MachineId));
    formBuildGridControl.addDataField(formBuildDatasource.id(), fieldNum(SomeTable, MachineStatus));

}

Добавление запроса:

for (counter = 0; counter < locations.lastIndex(); counter++)
{
    fds = formRun.dataSource(counter+1);
    qbds = fds.query().dataSourceNo(1);
    qbr = Qbds.addRange(fieldnum(SomeTable, MachineLocation));
    qbr.value(locations.value(counter+1));
}

person MerC    schedule 24.12.2013    source источник


Ответы (3)


Этот ответ на ваш предыдущий вопрос применим и здесь:

Добавление представления / временного записи таблицы в сетку форм

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

person Jan B. Kjeldsen    schedule 26.12.2013
comment
На самом деле существует один источник данных для каждой сетки, использующий одну и ту же таблицу. Я проверил, перейдя в режим персонализации - ›запрос в появившейся форме. Поскольку эта форма была создана с помощью X ++, я продублировал ее путем перетаскивания AOT. Эта форма может работать правильно, а запрос Personalize - ›выглядит так же, как форма, созданная с помощью X ++. Кроме того, форма x ++, когда я устанавливаю флажок для записи, она проверяет все сетки (на разных вкладках), которые тоже находятся в одной строке, что неверно - person MerC; 27.12.2013
comment
PS: я использую x ++ для создания формы, поскольку мне нужно динамически добавлять сетки / вкладки в зависимости от созданного locations, поэтому, если в будущем появится новое место, эта форма будет иметь дополнительную сетку / вкладку - person MerC; 27.12.2013
comment
Попробуйте сохранить созданную во время выполнения форму в AOT. Затем проанализируйте или отладьте сохраненную форму. - person Jan B. Kjeldsen; 28.12.2013

Можете ли вы сделать запрос + представление таблицы и использовать ее как «дочернюю» сущность?

Однако я не знаю, почему вы не можете дважды ссылаться на одну и ту же таблицу в одних и тех же источниках данных. Убедитесь, что связь между таблицами определена правильно, и вы не запутались с именами источников данных, которые вы для них используете.

person ian_scho    schedule 25.12.2013

На самом деле вам нужно установить источник данных для объекта сетки, используя метод id () для объекта FormDataSource, а не только для всего объекта.

Меняться от:

formBuildGridControl.dataSource(formBuildDatasource);

to:

formBuildGridControl.dataSource(formBuildDatasource.id());
person Ryan George    schedule 01.03.2018