JQGrid установить заголовок и имя столбца - PullRequest
6 голосов
/ 05 сентября 2011

У меня есть JQGrid с 2 столбцами, куда я попаду на сервер и получу некоторые данные, затем я объединю некоторые строки на основе фильтров на сервере и хочу установить это как заголовок, а также хочу изменить имена столбцов на основе этих фильтров. Есть ли способ установить заголовки и имена столбцов на основе ActionResult с сервера?

1 Ответ

12 голосов
/ 06 сентября 2011

Мне интересен ваш вопрос.

Мы можем начать с простой сетки:

$("#list").jqGrid({
    url: 'ColumnNamesAndTitelFromServer.json',
    datatype: 'json',
    loadonce: true,
    colNames: ['Name', 'Email'],
    colModel: [
        {name: 'name', width: 100},
        {name: 'email', width: 150}
    ],
    rowNum: 5,
    rowList: [5, 10, 20],
    pager: '#pager',
    gridview: true,
    rownumbers: true,
    sortname: 'name',
    sortorder: 'asc',
    caption: 'Just simple local grid',
    height: 'auto'
});

и данные JSON:

{
    "total": 1,
    "page": 1,
    "records": 2,
    "rows": [
        {"id": "id1", "cell": ["John",    "john@example.com"]},
        {"id": "id2", "cell": ["Michael", "michael@example.com"]}
    ]
}

Мы получим следующие результаты

enter image description here

(см. демо )

Теперь мы расширим данные JSON нашей дополнительной информацией:

{
    "total": 1,
    "page": 1,
    "records": 2,
    "rows": [
        {"id": "id1", "cell": ["John",    "john@example.com"]},
        {"id": "id2", "cell": ["Michael", "michael@example.com"]}
    ],
    "userdata": {
        "title": "Das ist der Titel bestimmt beim Server",
        "columnNames": {
            "name": "Die Name",
            "email": "Die E-Mail"
        }
    }
}

В приведенном выше примере я просто определяю в userdata заголовок и имена столбцов сетки на немецком языке. Чтобы прочитать и использовать userdata, мы можем добавить следующий обработчик события loadComplete в сетку:

loadComplete: function () {
    var $grid = $(this), columnNames, name,
        userdata = $grid.jqGrid('getGridParam', 'userData');

    if (userdata) {
        if (userdata.title) {
            $grid.jqGrid('setCaption', userdata.title);
        }
        if (userdata.columnNames) {
            columnNames = userdata.columnNames;
            for (name in columnNames) {
                if (columnNames.hasOwnProperty(name)) {
                    $grid.jqGrid('setLabel', name, columnNames[name]);
                }
            }
        }
    }
}

Теперь та же сетка будет выглядеть как

enter image description here

(см. еще одно демо )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...