jqGrid поиск по локальным данным - PullRequest
0 голосов
/ 20 декабря 2011

Я использую плагин jqGrid для отображения некоторых данных (локально), поэтому

    $("#myList").jqGrid({
        datatype : 'jsonstring',
        datastr : getMyJson(),
        colNames : ['ID', 'TITLE', 'PROFILE'],
        colModel : [{
            name : 'Id',
            index : 'Id',
            width : 50,
            sorttype : 'int'
        }, {
            name : 'Title',
            index : 'Title',
            width : 100
        }, {
            name : 'Profile',
            index : 'Profile',
            width : 80
        }],
        jsonReader : {
            root : "rows",
            page : "page",
            total : "total",
            records : "records",
            repeatitems : true,
            cell : "cell",
            id : "id"
        },
        autoencode : true,
        ignoreCase : true,
        autowidth : true,
        cache : false,
        shrinkToFit : false,
        height : 500,
        rowNum : 3000,
        rowList : [10, 20, 30],
        pager : jQuery('#pager1'),
        viewrecords : true,
        sortable : true,
        loadonce : true,
        gridview : true,
        sortorder : "asc",
        multiselect : true,
        caption : "My List",
        emptyrecords : 'No results'
    });

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

Проблема в поиске. Когда я ввожу текст на любой панели инструментов для поиска, все данные строки исчезают. Я видел это демо http://www.trirand.com/blog/jqgrid/jqgrid.html и не могу найти, что не так.

Чего не хватает в моей сетке?

Заранее спасибо

РЕДАКТИРОВАТЬ:

function getMyJson() {
    var json;
    jQuery.ajaxSetup({
        async : false
    });
    $.post(BIN_ROOT + "getdata.php", function(data, textStatus) {
        json = data.Mytable;
    }, "json");
    jQuery.ajaxSetup({
        async : true
    });

    return json;
} 

Json имеет следующий формат

{
    "errorCode": 0,
    "errorDesc": "No Error",
    "MyTable": {
        "page": 1,
        "total": 1,
        "records": 12,
        "rows": [{
            "id": "41",
            "cell": ["41", "Title1", "User"]
        }, {
            "id": "30",
            "cell": ["30", "Title1", "Admin"]
        }, (...)
    }
}

1 Ответ

1 голос
/ 20 декабря 2011

Извините, но я не вижу никаких проблем в сетке, которую вы разместили.Посмотрите на демо .

Одна вещь, которую я могу рекомендовать вам дополнительно.Вам лучше использовать datatype: 'json' и mtype: 'POST' для получения данных непосредственно с сервера без необходимости совершать отдельный вызов $.post.Вам нужно просто использовать следующие настройки:

$("#myList").jqGrid({
    url: BIN_ROOT + "getdata.php",
    datatype: 'json',
    mtype: 'POST',
    jsonReader : {
        root : "MyTable.rows",
        page : "MyTable.page",
        total : "MyTable.total",
        records : "MyTable.records"
    },
    //... other parameter which you use
});

См. следующее демо .

...