Jump to content

Список колонок в одном столбце TUniDBGrid


x11

Recommended Posts

Вопрос по TUniDBGrid.

У каждой колонки есть в заголовке кнопка, где выпадает меню с пунктами сортировки и "Столбцы".

Непонятно зачем реализовано так, у каждого столбца есть меню "Столбцы".

Почему бы это меню не перенести в одну единственную кнопку над столбцом Индикатор?

Я уверен, это разгрузит форму и уменьшит передачу данных между клиентом и сервером, что положительно отразится на производительности и сервера, и клиента.

Особенно, если в приложении очень много столбцов.

 

Если это возможно, подскажите, как это реализовать. Спасибо.

Screenshot_8.jpg

Link to comment
Share on other sites

4 minutes ago, x11 said:

У каждой колонки есть в заголовке кнопка, где выпадает меню с пунктами сортировки и "Столбцы".

Непонятно зачем реализовано так, у каждого столбца есть меню "Столбцы".

Ну эта особенность самой библиотеки ExtJS.

5 minutes ago, x11 said:

Почему бы это меню не перенести в одну единственную кнопку на столбцом Индикатор?

Я также попробую проанализировать этот момент.

  • Like 2
Link to comment
Share on other sites

Идея отличная. Виндовые гриды часто так и работают. Удобно. Другой вариант: сделать в углу просто кнопку + по клику отображать окно со списком полей с возможностью включения, отключения и драг-дропа для смены последовательности полей в гриде.

  • Like 1
Link to comment
Share on other sites

Ок, как временное решение можно и так.

А какое свойство TUniDBGrid отвечает за отображение меню "Столбцы"?

Чтобы скрыть это меню, чтобы список столбцов не грузился по 50 раз. У меня, например, в приложении очень много столбцов (приложение по работе с разного рода объявлениями, где много-много параметров).

Link to comment
Share on other sites

А можно это сделать с помощью TUniClientEvents?

Почему я так хочу, отвечаю. При загрузке формы/фрейма я сделал так, что выполняется начальная процедура инициализации настроек сетки UniDBGrid из файла (файлов). Чтобы все сетки на всех фреймах выглядели похоже (одинаково), я выполняю такую процедуру:

procedure dbgLoadBeforeInitJs(const dbg: TUniDBGrid);
const
  constMultiColumnSortFileName = 'dbgBeforeInit.js';
Var
 sl: TStringList;
 sDbgFileName, sMultiColumnSortFileName, beforeInit: string;
begin
// config.multiColumnSort = true;

  sl := TStringList.Create;

  try
//сперва грузим общий файл для всех сеток
    sMultiColumnSortFileName := IncludeTrailingPathDelimiter(UniServerModule.FilesFolderPath) + constMultiColumnSortFileName;

    if FileExists(sMultiColumnSortFileName) then
    begin
        sl.LoadFromFile(sMultiColumnSortFileName);

        beforeInit := dbg.ClientEvents.UniEvents.Values['beforeInit'];

        if beforeInit.IsEmpty then
          dbg.ClientEvents.UniEvents.Values['beforeInit'] := sl.Text
        else// если в событии beforeInit уже что-то есть
          dbg.ClientEvents.UniEvents.Values['beforeInit'] := beforeInit + sLineBreak + sl.Text
    end;

    sl.Clear;
// теперь грузим файл для конкретной сетки, если он есть
    sDbgFileName := IncludeTrailingPathDelimiter(UniServerModule.FilesFolderPath) + dbg.Owner.Name + '.' + dbg.Name + '.js';// имя формы/фрейма + имя сетки
    if FileExists(sDbgFileName) then
    begin
      sl.LoadFromFile(sDbgFileName);

      beforeInit := dbg.ClientEvents.UniEvents.Values['beforeInit'];

      if beforeInit.IsEmpty then
        dbg.ClientEvents.UniEvents.Values['beforeInit'] := sl.Text
      else// если в событии beforeInit уже что-то есть
        dbg.ClientEvents.UniEvents.Values['beforeInit'] := beforeInit + sLineBreak + sl.Text
    end;

  finally
    sl.Free;
  end;

end;

А в файле написано вот так:

Quote

function beforeInit(sender, config)
{
  config.multiColumnSort = true;
}

 

В итоге мне не надо настраивать каждый раз новую сетку руками в designtime.

А сеток у меня будет много.

Screenshot_5.jpg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...