Инструменты пользователя

Инструменты сайта


axapta:переборвыделенныхстрок

Раздел: Программирование > РаботаСБазойДанных


BestPractices рекомендует следующий способ обойти все строки FormDataSource, выделенные в Grid (раздел «Traversing multi selected records in a data source»):

void clicked() 
{
    xRefReferences xRefReferencesEdit;
    // есть ли выделенные строки -
    for (xRefReferencesEdit = xRefReferences_ds.getFirst(1) ?
            xRefReferences_ds.getFirst(1) : //если есть, получаем первую
            xRefReferences;                 //иначе используем текущую запись
        // продолжаем, пока получаем записи
         xRefReferencesEdit;
        // выбираем следующую запись
        xRefReferencesEdit = xRefReferences_ds.getNext())
    {
        // обработка xRefReferencesEdit
        ...
    }
}

К данной записи приложен Sys_FormDataSourceSelectionEnumerator.7z, который инкапсулирует этот алгоритм перебора

SYS_FormDataSourceSelectionEnumerator i = new SYS_FormDataSourceSelectionEnumerator(EmplTable_ds)
while (i.moveNext())
      info(int2str(i.current().recID));

Обработка набора записей, переданных через Args

Если надо перебирать набор записей в классе, вызванным из MenuItem, FormDataSource можно получить так:

static void main(Args _args)
{
     FormDataSource ds=_args.record().dataSet();
     EmplTable empl;
;
    // есть ли выделенные строки -
    for (empl = ds.getFirst(1) ? ds.getFirst(1) : _args.record();  empl; empl  = ds.getNext())
    {
        // обработка empl
        ...
    }
}
axapta/переборвыделенныхстрок.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)