При совместном использовании jQGrid setFrozenColumns и filterToolbar столбцы исчезают - PullRequest
0 голосов
/ 29 марта 2012

Я использую функцию фильтра строк и замороженных столбцов одновременно, и они, кажется, конфликтуют.Вот визуальное представление о проблеме:

До (при обновлении):

col1 (frozen) | col2 | col3 | col4 | col5 | col6

filter row    
search term   |     |     |     | 

data          | data | data | data| data| data

data          | data | data | data| data| data

data          | data | data | data| data| data

data          | data | data | data| data| data

data          | data | data | data| data| data

data          | data | data | data| data| data

Но после ввода фильтра

col1 (frozen)  |||||||

filter row 
new search term||||||| 

data           |||||||

data           |||||||

data           |||||||

data           |||||||

data           |||||||

data           |||||||

Строки |||||| представляютстолбцы «зажаты» вместе - их данные и ширина исчезли.

2 строки кода, которые кажутся конфликтующими:

loadComplete: function () {

  $.getScript('<%=Url.Content("~/Names/PopulateFilterBar/")%>');

  jQuery("#list").jqGrid('setFrozenColumns'); 

},

Первый оператор - это вызов функциив контроллере MVC, который выделяет следующее:

 jQuery("[id=gs_Name]").val("company"); }

Если я удаляю первую команду, 2-я работает отлично, но я теряю внешний вид слов фильтра при обновлении.Если я удаляю 2-й, я теряю функцию замороженного столбца.

Кто-нибудь видел эту ошибку?

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

Я использую jqGrid, все новейшие версии jQuery, в VS2010 ASP.NET, .NET 4, MVC.

1 Ответ

0 голосов
/ 07 мая 2012

Обновленный ответ: мне предложили сделать все вызовы, чтобы обновить сетку только «один раз». Первоначально я использовал метод LoadComplete для обновления сетки, это было излишне вызывать функции при каждом обновлении. Поэтому я изменил свой код для удаления loadComplete (). Пожалуйста, смотрите новый код ниже.

Я также изменил методологию заполнения панели фильтров - теперь это делается полностью на уровне javascript и только один раз.

Однако, к сожалению, я все еще испытываю мерзкое поведение, описанное выше. Пожалуйста, если кто-нибудь видел это, высоко ценит ваш ответ.

обновленный код:

<script type="text/javascript">

    $(function () {

        <%= Html.ToJsColumnNames("dynamicGridDataColumnNames", Model.GridColumns ) %>
        <%= Html.ToJsColumns("dynamicGridDataColumns", Model.GridColumns, "" ) %>
        <%= Html.ToJsShowHideColums("dynamicGridDataShowHideColumns", Model.GridColumns) %>
        <%= Html.ToJsGetCurrentFilters("dynamicGridDataCurrentFilters") %>

        document.title = "CLEAR Masterlist";

        jQuery("#list").jqGrid({
            url: '<%=Url.Action("DynamicGridData")%>',
            datatype: 'json',
            mtype: 'POST',
            colNames: dynamicGridDataColumnNames,
            colModel: dynamicGridDataColumns,
            pager: jQuery('#pager'),
            pagerpos: 'center',
            rowNum: 100,
            rowList: [100, 100000000],
            sortname: "Name",
            sortorder: "asc",
            height: 600,
            width: 1235,
            loadui: "block",
            shrinkToFit: false,
            multiselect: true,
            multiboxonly: false,
            caption: 'List of Names'
        });

        jQuery("#list").jqGrid('navGrid', '#pager', {
            del: false, add: false, edit: false, search: false, refresh: false,
            view: false, height: 250, jqModal: false, closeOnEscape: true
        });

        $("option[value=100000000]").text('All');

        jQuery("#list").jqGrid('filterToolbar', { autosearch: true, searchOnEnter: true, stringResult: true
        });

        jQuery("#list").jqGrid('setFrozenColumns');

        var fdiv = jQuery("#list").fhDiv;
        var cf = dynamicGridDataCurrentFilters.split("&&");
        for (var x = 0; x < cf.length; x++) {
            var f = cf[x].split('~');
            if (f.length > 1) {
                var fld = "[id=gs_" + f[0] + "]";
                jQuery(fld, fdiv).val(f[1]);
            }
        }

    });

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