Jump to content

Recommended Posts

Posted

Вопрос по TUniDBGrid.

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

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

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

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

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

 

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

Screenshot_8.jpg

Posted
4 minutes ago, x11 said:

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

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

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

5 minutes ago, x11 said:

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

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

  • Like 2
Posted

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

  • Like 1
Posted

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

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

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

Posted
55 minutes ago, x11 said:

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

Попробуйте эту конфигурацию:

 

Posted

А можно это сделать с помощью 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

Posted

Ну если хотите в "beforeInit", то просто включите и эту строку тоже:

config.enableColumnHide=false; 

 

  • Like 1

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...