Как полностью скрыть jqgrid, если данные не возвращены?

У меня чертовски много времени пытается отобразить мой jqGrid только когда записи возвращаются из моего веб-сервиса. Я не хочу, чтобы оно было свернуто так, чтобы вы видели только панель с заголовками, но если это лучшее, что я могу сделать, я полагаю, что я мог бы добавить содержательное сообщение в подпись. Тем не менее, я бы предпочел просто спрятать сетку и показать блок сообщений «No Records Found».

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

Я пытался сделать .hide () внутри функции, используемой при загрузке данных из функции, и события GRIDCOMPLETE, но ни один из них не смог скрыть сетку. Я новичок в JQuery, не говоря уже о новичках в использовании jqGrid.

$(document).ready(function() {
    $("#list").jqGrid({
        url: 'Service/JQGridTest.asmx/AssetSearchXml',
        datatype: 'xml',
        mtype: 'GET',
        colNames: ['Inv No', 'Date', 'Amount'],
        colModel: [
            { name: 'invid', index: 'invid', width: 55 },
            { name: 'invdate', index: 'invdate', width: 90 },
            { name: 'amount', index: 'amount', width: 80, align: 'right' }],
        pager: jQuery('#pager'),
        postData: { "testvar": "whatever" },
        rowNum: 10,
        rowList: [10, 20, 30],
        sortname: 'id',
        sortorder: "desc",
        viewrecords: true,
        imgpath: 'themes/sand/images',
        caption: 'My first grid',
        gridComplete: function() {
            var recs = $("#list").getGridParam("records");
            if (recs == 0) {
                $("#list").hide();
            }
            else {
                alert('records > 0');
            }
        }
    });

    ...

    

И попробовал тоже:

$(document).ready(function() {
    $("#list").jqGrid({
        datatype: function(postdata) {
            jQuery.ajax({
                url: 'Service/JQGridTest.asmx/AssetSearchXml',
                data: postdata,
                dataType: "xml",
                complete: function(xmldata, stat) {
                    if (stat == "success") {
                        var thegrid = $("#list")[0];
                        thegrid.addXmlData(xmldata.responseXML);
                        var recs = $("#list").getGridParam("records");

                        if (recs == 0) {
                            $("#list").hide();
                            alert('No rows - grid hidden');
                        }
                        else {
                            alert(recs);
                        }
                    }
                    else {
                        alert('FAIL');
                    }
                }
            });
        },
        mtype: 'GET',
        colNames: ['Inv No', 'Date', 'Amount'],
        colModel: [
            { name: 'invid', index: 'invid', width: 55 },
            { name: 'invdate', index: 'invdate', width: 90 },
            { name: 'amount', index: 'amount', width: 80, align: 'right' }],
        pager: jQuery('#pager'),
        postData: { "testvar": "whatever" },
        rowNum: 10,
        rowList: [10, 20, 30],
        sortname: 'id',
        sortorder: "desc",
        viewrecords: true,
        imgpath: 'themes/sand/images',
        caption: 'My first grid'
    });

    ...

    

Спасибо за любую помощь, которую вы можете предоставить.

23
задан Community 23 May 2017 в 12:25
поделиться

3 ответа

Достаточно не включать опцию «заголовок» в определение сетки. Протестировано с версией 5.0.1

0
ответ дан user7082304 23 May 2017 в 12:25
поделиться

Я обнаружил, что это:

parseInt($("#grid").getGridParam("records"),10);

возвращает «NaN». Свойство records имеет значение null, если в сетке нет записей. Поэтому вы не можете привести его к числу и проверить, равно ли оно нулю.

5
ответ дан sth 23 May 2017 в 12:25
поделиться

Попробуйте использовать этот метод, чтобы скрыть jqGrid:

$("#someGridTableName").jqGrid("GridUnload");

Обязательно укажите:
jquery.jqGrid-x.x.x / src / grid.custom.js файл.

См. Этот пост , в котором больше говорится о вышеупомянутом методе. Или jqGrid wiki , где говорится об этом методе в разделе Add on Grid Methods.

Еще один важный момент:
Избегайте использования обертки (см. post ) < div > теги на jqGrid, чтобы скрыть его, потому что его атрибут overflow: auto; не будет работать, если вы попытаетесь сделать столбцы сетки вручную шире и превысить ширину div-оболочки.
Другими словами, jqGrid уже оснащен логикой для создания горизонтальной полосы прокрутки без помощи внешних элементов div.

Примечание: Проверено на IE8 & amp; 9

1
ответ дан Community 23 May 2017 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: