Можно ли искать локально в jqGrid с установленным treeGrid - PullRequest
1 голос
/ 29 марта 2012

Я использую jqGrid с treeGrid.Я добавил filterToolbar.Я хотел бы искать локально вместо того, чтобы иметь вызов на сервере.Документы treegrid говорят, что "Когда мы инициализируем сетку и данные прочитаны, тип данных автоматически устанавливается на локальный." (Это относится к TreeGrid)

Итак, можно ли реализовать локальный поиск с treeGrid.Я попробовал приведенную ниже конфигурацию, но она приводит к вызовам на сервере.

Моя конфигурация

var grid = $("#grid").jqGrid({
    treeGrid: true,
    treeGridModel: 'adjacency',
    ExpandColumn: 'businessAreaName',
    ExpandColClick : true,
    url:'agileProgramme/records.do',
    datatype: 'json',
    mtype: 'GET',
    colNames:['Id'
              , 'Business Area'
              , 'Investment'
              , 'Org'
              , 'Goal'
    ],
    colModel:[
/*00*/          {name:'agileProgrammeId',index:'agileProgrammeId', width:0, editable:false,hidden:true},
/*01*/          {name:'businessAreaName',index:'businessAreaName', width:160, editable:false},
/*02*/          {name:'programmeName',index:'programmeName', width:150, editable:false, classes:'link'},
/*03*/          {name:'org',index:'org', width:50, editable:false, classes:'orgHierarchy', sortable : false},
/*04*/          {name:'goal',index:'goal', width:70, editable:false}
    ],
    treeReader : {
        level_field: "level",
        parent_id_field: "parent", 
        leaf_field: "leaf",
        expanded_field: "expanded"
    },
    autowidth: true,
    height: 240,
    pager: '#pager',
    sortname: 'id',
    sortorder: "asc",
    toolbar:[true,"top"],
    caption:"TableGridDemo",
    emptyrecords: "Empty records",
    jsonReader : {
        root: "rows",
        page: "page",
        total: "total",
        records: "records",
        repeatitems: false,
        cell: "cell",
        id: "agileProgrammeId"
    }
});   

И для реализации панели инструментов поиска

$('#grid').jqGrid('filterToolbar', {stringResult: true,searchOnEnter : true});

Был бы признателен любойпомощь или какой-либо указатель, даже если это возможно?

1 Ответ

2 голосов
/ 29 марта 2012

Основная проблема в фильтрации TreeGrid состоит в том, что неясно , что должно отображаться в TreeGrid в результате применения фильтра.Стандартное поведение применения фильтра к сетке состоит из удаления всех нефильтрованных строк.Такое поведение будет неправильным в случае TreeGrid.В ответе на закрытый вопрос я попытался объяснить проблему.

Можно попытаться реализовать лишь некоторую подсветку только отфильтрованных строк (см. здесь как идея) или можно установить какой-то класс CSS для нефильтрованных строк, чтобы сделать их серыми (например, отключенными).В любом случае нужно каким-то образом отображать родителей отфильтрованных строк.Еще одним вариантом будет отображение отфильтрованной TreeGrid не в форме дерева.Например, может отображаться дополнительный столбец с путем к отфильтрованной строке и данными остальной строки.

ОБНОВЛЕНО: Я имею в виду то, что «отображать родителей отфильтрованных строк»следующие.Пусть у нас есть TreeGrid, подобный следующему

+root             123
    +testchild1    32
        test1       4
    +child2        30
        test2       7

, и мы фильтруем первый столбец для текста «test».В этом случае было бы неправильно отображать только строки с текстом «test»

    +testchild1    32
        test1       4
        test2       7

, но в некоторых сценариях было бы достаточно отобразить вышеуказанные строки с полным путем до корневого элемента:

root\testchild1          32
root\testchild1\test1     4
root\testchild1\test2     7

В случае, если информация будет отображаться в сетке вместо TreeGrid.

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

...