jqGrid - перезагрузка данных - PullRequest
0 голосов
/ 31 августа 2011

Я пытаюсь добавить элемент в свой источник данных, а затем повторно загрузить сетку на основе этого ответа . Сетка загружается нормально. addItemToGrid вызывается несколько раз, и я проверяю, что базовый объект tableSrc добавляется, но сетка остается неизменной.

    var tableSrc = { "rows": [
        { "title": "Title1", "subtitle": "subTitle", "authors": ["a1", "a2", "a3"] },
        { "title": "Title2", "subtitle": "subtitle", "authors": ["X", "Y"] },
        { "title": "Title3", "subtitle": "subTitle", "authors": ["1", "2", "3", "4"]}]
    };

    targetGrid = $("#jqGridElement").jqGrid({
        datastr: tableSrc,
        jsonReader: { repeatitems: false },
        datatype: "jsonstring",
        colNames: ['title', 'subtitle'],
        colModel: [
            { name: 'title', index: 'title', width: 55 },
            { name: 'subtitle', index: 'subtitle'}],
        height: 'auto',

        gridview: true
    });

    function addItemToGrid() {
        tableSrc.rows.push({ "title": "NEW", "subtitle": "HELLO", "authors": ["1", "2", "3", "4"] });
        $("#jqGridElement").trigger('reloadGrid');
        //$("#jqGridElement").jqGrid('reloadGrid');
    }

1 Ответ

2 голосов
/ 31 августа 2011

Во-первых, оператор $("#jqGridElement").trigger('GridUnload') ничего не делает, потому что нет события с именем 'GridUnload'. Единственное событие, в настоящее время поддерживаемое jqGrid - это 'reloadGrid'. Событие поддерживает дополнительные параметры (см. здесь ), которые могут быть вам интересны. Вызов $("#jqGridElement").trigger("reloadGrid", [{current:true}]); обновит сетку, но выбор, который может сделать пользователь, не изменится.

Если вам нужен вызов GridUnload в «API нового стиля», он должен выглядеть следующим образом:

$("#jqGridElement").jqGrid('GridUnload');

После вызова метода GridUnload элемент table, являющийся основой jqGrid, будет воссоздан. Поэтому, если вы сохранили $("#jqGridElement") в переменной (например, var gridObj = $("#jqGridElement")), вы должны обновить значение (с присваиванием gridObj = $("#jqGridElement")).

Теперь о вашем главном вопросе. Метод GridUnload полезен в том случае, если вам нужно добавить новый столбец в сетку или создать на месте старой сетки совсем другую сетку. (см. ответ или этот в качестве примера). Если вам нужно добавить одну строку данных в существующую сетку, вы можете использовать addRowData , например.

Что действительно важно для вас понять, так это использование идентификаторов для каждой строки (<tr> элемент). Если вы не хотите управлять идентификаторами самостоятельно, вы можете использовать undefined в качестве rowid в методе addRowData . В этом случае метод $.jgrid.randId() будет использоваться для генерации уникального идентификатора для новой строки.

...