0

グリッドビルダーオブジェクトを作成しようとしています。このグリッドビルダーには、buildGridというメソッドがあります。これは、グリッドの一連のパラメーターを定義するオブジェクトを期待するように設計されています。

buildOrdersGrid: function () {
    var ordersGrid = buildGrid({
        gridElementID: 'OrdersGrid',
        gridPagerElementID: 'OrdersGridPager',
        colNames: ['Order ID', 'Project Subcode', 'Incident Number', 'Cost Center', 'Name', 'Customer'],
        colModel: [
            { name: 'ID', hidden: true },
            { name: 'ProjectSubcode' },
            { name: 'IncidentNumber' },
            { name: 'CostCenter' },
            { name: 'Name' },
            { name: 'Customer' }
        ],
        defaultCaption:'Orders: no filter applied',
    });
    return ordersGrid;
}

function buildGrid(data) {
    var grid = $('#' + data.gridElementID);
    var gridPager = $('#' + data.gridPagerElementID);

    grid.jqGrid({
        datatype: 'local',
        colNames: data.colNames,
        colModel: data.colModel,
        gridview: true,
        height: 'auto',
        pager: gridPager,
        viewrecords: true,
        multiselect: true,
        defaultCaption: data.defaultCaption,
        caption: data.defaultCaption,
        shrinkToFit: false
    });

    return grid;
}

そのようなものですが、それは本当に新しいコードなので、改善する方法についてのアドバイスを受け入れてください。

ここで、このbuildGridメソッドを拡張して、事前定義されていないプロパティを取得し、それらをjqGridに渡すことができるようにします。何かのようなもの:

buildTaskGrid: function () {
    var tasksGrid = buildGrid({
        gridElementID: 'TasksGrid',
        gridPagerElementID: 'TasksGridPager',
        colNames: ['Order', 'Task ID', 'Task #', 'Type', 'Status', 'Assignee', 'Current Location', 'Dest Location', 'Change No', 'Net Patched', 'SAN Patched'],
        colModel: [
            { name: 'Order' },
            { name: 'TaskID', hidden: true },
            { name: 'TaskNo' },
            { name: 'Type' },
            { name: 'Status' },
            { name: 'Assignee' },
            { name: 'CurrentLocation' },
            { name: 'DestLocation' },
            { name: 'ChangeNo' },
            { name: 'NetPatched' },
            { name: 'SANPatched' }
        ],
        defaultCaption:'Tasks: no filter applied',
        //Decorate with task-specific properties.
        grouping: true,
        groupingView: {
            groupField: ['Order'],
            groupColumnShow: [false]
        },
        ondblClickRow: function (rowid) {
            $(this).trigger('taskDoubleClicked', selector.getRowData(rowid));
        } 
    });

    return tasksGrid;
}

予期しないプロパティを「見つけて」グリッドに渡すのに最適な方法がわかりません。何か案は?

4

1 に答える 1

1

このhttp://api.jquery.com/jQuery.extend/を使用できると思います

于 2012-09-27T22:28:02.997 に答える