JqGrid, добавить кнопку очистки в столбце поиска панели инструментов - PullRequest
0 голосов
/ 18 января 2012

У меня есть JqGrid с возможностью поиска на панели инструментов. Один из моих столбцов - это столбец даты и времени, а поле поиска - это средство выбора даты jquery. Проблема с датщиком заключается в том, что вы не можете иметь пустое значение, но так как это поле является фильтром, оно может быть пустым. Так что я хотел бы добавить маленькую кнопку рядом с указателем даты, которая очистит поле. Есть ли способ сделать это, или чтобы иметь возможность очистить средство выбора даты со стороны клиента.

enter image description here

Вот код для столбца

{ name: 'Period', index: 'Period', align: 'center', formatter: 'date', formatoptions: { newformat: 'F, Y' }, width: '70px', search: true,
                        searchoptions: {
                            dataInit: function (el) {
                                $(el).datepicker({
                                    yearRange: "-5:+1",
                                    changeMonth: true,
                                    changeYear: true,
                                    showButtonPanel: true,
                                    dateFormat: 'MM, yy',
                                    onClose: function (dateText, inst) {
                                        var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                                        var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                                        $(this).datepicker('disable');
                                        $(this).datepicker('setDate', new Date(year, month, 1));
                                        $(this).datepicker('enable');
                                        $("#jqgCompLine")[0].triggerToolbar();
                                    },
                                    beforeShow: function (input, inst) {
                                        if ((datestr = $(this).val()).length > 0) {
                                            year = datestr.substring(datestr.length - 4, datestr.length);
                                            month = jQuery.inArray(datestr.substring(0, datestr.length - 6), $(this).datepicker('option', 'monthNames'));
                                            $(this).datepicker('option', 'defaultDate', new Date(year, month, 1));
                                            $(this).datepicker('setDate', new Date(year, month, 1));
                                        }
                                    }
                                });
                            }
                        },

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 18 января 2012

У datepicker нет проблем с пустыми полями.Я предполагаю, что это проблема с вашей настройкой.

Я не знаю, какие данные у вас есть в качестве значений даты в сетке.Формат 'F, Y''MM, yy' для средства выбора даты) кажется мне несколько странным, поскольку поиск будет выполняться по полной дате, но вы отображаете только название и год.Вероятно, все будет работать правильно с вашими данными, вероятно, нет.

Я создал демо , чтобы продемонстрировать, что поиск с помощью DatePicker.При создании демонстрации я использовал формат 'j, F, Y' (для средства выбора даты - формат 'd, MM, yy' ) и нашел две ошибки в parseDate метод, используемый внутренне jqGrid.

Первая проблема в строках , где значение date[k] будет корректно вычислено, но не присвоено tsp.m.В оба оператора if следует вставить присваивание tsp.m = date[k];.Таким образом, оба формата «F» и «M» работают некорректно в текущем коде jqGrid.Поскольку вы используете формат «F», это может быть важно для вас.

Следующая проблема заключается в том, что формат 'j' для дня будет обрабатываться неправильно.Во время синтаксического анализа даты tsp.j будет назначен правильно, но tsp.d, который будет использоваться в строке , не будет изменен и останется равным 1. Для исправления кода Iпредлагаем добавить строку

if(tsp.j !== undefined) { tsp.d = tsp.j; }

где-нибудь после цикла for. В демоверсии используется измененная версия jquery.jqGrid.src-parseDate.js из jquery.jqGrid.src.js jqGrid 4.3.1.

Я сообщу об ошибке имое исправление к Trirand позже.

...