Jump to content

MSMK

uniGUI Subscriber
  • Posts

    392
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by MSMK

  1. 1 hour ago, x11 said:

    Интересно, а как добавить этот функционал?

    Screenshot_1.jpg

    не понял вопроса. По идее просто указать тип фильтра.

    s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''string''};

    • Like 1
  2. 21 hours ago, x11 said:

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

    2. Дай пример, как ты отправляешь готовый список options.

    https://fiddle.sencha.com/#fiddle/2jgl&view/editor  вот пример работы фильтрации по всему набору данных. Может Шерзод поможет реализовать эту схему?

  3. 20 hours ago, x11 said:

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

    2. Дай пример, как ты отправляешь готовый список options.

    procedure DbgLoadFilters(dbg: TUniDBGrid);
    var
        s: string;
        i: Integer;
    begin
        dbg.ClientEvents.ExtEvents.Values['afterrender'] := 'function afterrender(sender, eOpts) { sender.addPlugin(''gridfilters''); }';

        for i := 0 to pred(dbg.Columns.Count) do
        begin
            if s.IsEmpty then
                s := 'columns[' + i.ToString + '].filter = {type: ''list''};'
            else
                s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''list'', options: [''Казахстан'', ''Украина'', ''Россия'']};
        end;

        dbg.ClientEvents.ExtEvents.Values['reconfigure'] :=
            'function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { ' + s + sLineBreak + '}';
    end;

  4. Всем привет! Хорошие фильтры, наподобие как у DevExpress VCL. Изучив  поведение фильтра из этой статьи, понял что:

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

    2) при использовании типа фильтра List, список строится из данных столбца только текущей страницы. Но этот момент можно обойти, построим свой список используя свойство options: [''Казахстан'', ''Украина'', ''Россия'']

    s := s + sLineBreak + 'columns[' + i.ToString + '].filter = {type: ''list'', options: [''Казахстан'', ''Украина'', ''Россия'']};

    и теперь вопрос. Как реализовать фильтрация по всему набору данных грида, использую эти фильтры?

  5. 49 minutes ago, =GGG= said:

    есть один минус, при использовании фильтра типа "List", строится список тлько из данных текущей страницы (page), список по всем страницам он не строит. Использовании пагинации в гриде нужно, так как большой объем данных

    а также фильтрация только по текущей странице

  6. On 2/28/2021 at 2:59 PM, x11 said:

    Т.е. чтобы вверху появились пункты.

     

    Screenshot_10.jpg

    есть один минус, при использовании фильтра типа "List", строится список тлько из данных текущей страницы (page), список по всем страницам он не строит. Использовании пагинации в гриде нужно, так как большой объем данных

  7. On 10/1/2020 at 4:54 PM, x11 said:

    Please tell me. Why are there no filters in the grid?

    thank you

    procedure TfmMainForm.UniFormCreate(Sender: TObject);
    begin
      CreateFilterDBGToday;
    end;
    
    procedure TfmMainForm.CreateFilterDBGToday;
    var
      i:integer;
      FieldType: TFieldType;
      Column: TUniDBGridColumn;
    begin
    // dbgToday is a TUniDBGrid
      dbgToday.JSInterface.JSConfigPlugin('Ext.grid.filters.Filters', ['id', 'gridFilters']);
    
      for i := 0 to Pred(dbgToday.Columns.Count) do
      begin
        Column := dbgToday.Columns[i];
        Column.Filtering.Enabled := True;
        Column.Sortable := True;
    
        FieldType := dbgToday.DataSource.DataSet.FindField(Column.FieldName).DataType;
    
        case FieldType of
          ftString          : dbgToday.JSInterface.JSConfig('filter', ['string'], Column.JSColumn);
          ftDate, ftDateTime: dbgToday.JSInterface.JSConfig('filter', ['date'], Column.JSColumn);
          ftInteger, ftFloat: dbgToday.JSInterface.JSConfig('filter', ['number'], Column.JSColumn);
          ftBoolean         : dbgToday.JSInterface.JSConfig('filter', ['boolean'], Column.JSColumn);
          else
            dbgToday.JSInterface.JSConfig('filter', ['list'], Column.JSColumn);
        end;// case
      end;// for
    
    
    //  Available values for Filter = "boolean,date,list,number,string"
    // http://forums.unigui.com/index.php?/topic/11857-grid-filters-list/&do=findComment&comment=63164
    end;

     

    Screenshot_7.jpg

    Доброе время суток! Разобрались с этим вопросом? Меня в частности волнует локализация фраз Filters и прочие фразы?

  8. On 6/14/2018 at 6:29 PM, Sherzod said:

    Try with this approach for now...:

     

    1.

    
    
    function select(sender, record, index, eOpts)
    {
        var IDs = "";
        this.getSelection().forEach(function (rec) {if (IDs == "") {IDs = rec.data[yourIDIndx]} else {IDs = IDs + "," + rec.data[yourIDIndx]}});
        ajaxRequest(this, "_getSelection", ['IDs=' + IDs]);
    }

    2.

    
    
    procedure TMainForm.UniDBTreeGrid1AjaxEvent(Sender: TComponent;
      EventName: string; Params: TUniStrings);
    begin
      if EventName = '_getSelection' then begin
        ShowMessage(Params.Values['IDs']);
      end;
    end;

    Добрый день! а как реализовать выборку по группе? Чтобы возвращал список ID всех записей в родительском ноде

     

    540972102_.png.c071ab0c75bd2a343206d2025b7a10ff.png

     

  9. Awww! Support service! What are your load requirements for hyperServer? Is there a load calculation manual? my application server crashes when there are more than 200 users. The application is complex, rewritten from the desktop, legacy code. Help me please! :excl::excl::excl::excl::excl:

     

  10. Может в этой ветке кто сможет помочь с этим вопросом. Валится ошибка Socket Error 10061 , после того как  один из нодов ушел в статус Suspended

  11. Hello! I have a problem with HyperServer working. Socket Error 10061 is dropping

    10061.jpg.35f744e286ea3d7fb2e97b288194015d.jpg

    This error starts after the nodes go into Suspended mode

    suspended.jpg.823932f9980984f082d6c23c4d4141b7.jpg

    The problem is solved by a complete reboot of IIS
  12. 1 hour ago, Sherzod said:

    Попробуйте проанализировать следующий подход:

    
    procedure TMainForm.UniFormCreate(Sender: TObject);
    begin
      grdData.JSInterface.JSAddListener(
        'beforereconfigure',
        '  function(sender, store, columns){'+
        '    columns[0].colName="'+ grdData.Columns[0].FieldName +'",'+
        '    ...'+
        '  }'
      );
    end;

     

    получается прописать имена столбцам вручную?

  13. 21 hours ago, =GGG= said:

    function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts)
    {       
        var findColumnIndex = function(columns, dataIndex) {
        var index;
        for (index = 0; index < columns.length; ++index) {
            if (columns[index].dataIndex == dataIndex) { break; }
        }
        return index == columns.length ? -1 : index;
        }
        
        var widgetColIndx1=0;
        var widgetColIndx2=findColumnIndex(columns, 'DocVariant');
          
        columns[widgetColIndx1].onWidgetAttach = function(column, widget, record) {
           widget.setVisible(record.get(widgetColIndx1) != 0);
        };
           
        columns[widgetColIndx2].onWidgetAttach = function(column, widget, record) {
           widget.setVisible(record.get(widgetColIndx2) != 1);
        };
    } не помогло

    а как насчет этого? у меня проблема в случае переноса столбцов

  14. 19 minutes ago, =GGG= said:

    как обратиться к столбцу по имени, а не по индексу, так как при переносе столбцов по гриду сбиваются индексы

    function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts)
    {       
        var findColumnIndex = function(columns, dataIndex) {
        var index;
        for (index = 0; index < columns.length; ++index) {
            if (columns[index].dataIndex == dataIndex) { break; }
        }
        return index == columns.length ? -1 : index;
        }
        
        var widgetColIndx1=0;
        var widgetColIndx2=findColumnIndex(columns, 'DocVariant');
          
        columns[widgetColIndx1].onWidgetAttach = function(column, widget, record) {
           widget.setVisible(record.get(widgetColIndx1) != 0);
        };
           
        columns[widgetColIndx2].onWidgetAttach = function(column, widget, record) {
           widget.setVisible(record.get(widgetColIndx2) != 1);
        };
    } не помогло

×
×
  • Create New...