How to set date search toolbar field width on auto

2019-07-14 03:20发布

I*m looking for a way to set date toolbar search field width on autoresize.

I tried code from

How to make html5 date field in search toolbar to respect column width

comment:

var serverResponse = {
        "page": "1",
        "records": "3",
        "rows": [
            { "Id": "1", IsActive: "2015-01-09" },
            { "Id": "2", IsActive: "2015-01-05" },
            { "Id": "3", IsActive: "2015-01-21" }
        ]
    },    
    dateTemplate = {
        sorttype: "date",
        formatter: "date",
        formatoptions: {
            srcformat: "Y-m-d",
            reformatAfterEdit: true
        },
        autoResizing: { minColWidth: 50 },
        autoResizable: true,
        width: 100,
        editoptions: {
            maxlength: 10,
            size: 10
        },
        editable: true,
        searchoptions: {
            sopt: ["eq", "ne", "lt", "le", "gt", "ge"],
            size: 10,
            clearSearch: false,
            attr: { size: 10, type: "date", style: "width:11em;" }
        }
    },
    $grid = $("#categorysummary");

$grid.jqGrid({
    url: "/echo/json/",
    datatype: "json",
    mtype: "POST",
    postData: {
        json: JSON.stringify(serverResponse)
    },
    colNames: ["Active", "Second"],
    colModel: [
        { name: "IsActive", template: dateTemplate },
        { name: "Second", width: 85 }
    ],
    resizeStop: function (newWidth, iCol) {
        var colModel = $(this).jqGrid("getGridParam", "colModel");
    if ($("#gs_" + $.jgrid.jqID(colModel[iCol].name)).attr("type") === "date") {

                $("#gs_IsActive").width(newWidth - 7); // - padding
        }
    },
    jsonReader: {
        id: "Id",
        repeatitems: false
    },
    viewrecords: true
}).jqGrid("filterToolbar");
$(".ui-search-table input[type=date]").each(function() {
    $(this).css("width", $(this).closest("th.ui-th-column").width() + "px");
});

css:

<div class="container">
    <table id="categorysummary"></table>
</div>

See fiddle http://jsfiddle.net/10qwgejj/13/

After double clicking in column separator line in Active column header search element with is too big and column border disappears from search toolbar.

overlap To set search field width on autoresize ?

Andrus.

1条回答
迷人小祖宗
2楼-- · 2019-07-14 04:02

I implemented (see the commit) new callback afterResizeDblClick and new event jqGridAfterResizeDblClick, which makes the solution very easy.

It uses the following code

var adjustSearchingDateField = function (cmName, newWidth) {
    var $searchingField = $("#gs_" + $.jgrid.jqID(cmName));
    if ($searchingField.attr("type") === "date") {
        $searchingField.width(newWidth - 7); // - padding
    }
};

...
resizeStop: function (newWidth, iCol) {
    var colModel = $(this).jqGrid("getGridParam", "colModel");
    adjustSearchingDateField(colModel[iCol].name, newWidth);
},
afterResizeDblClick: function (options) {
    adjustSearchingDateField(options.cmName, options.cm.width);
},
...

See the demo http://jsfiddle.net/OlegKi/10qwgejj/14/

查看更多
登录 后发表回答