将jqgrid中单元格的未格式化值作为参数

时间:2015-03-03 17:59:56

标签: asp.net-mvc jqgrid

我试图将一个单元格的值作为参数传递给网格中另一列的ajax调用。我需要的单元格值被格式化为返回一个url,所以当我选择它时,它传递的是url而不是batchID值。

如何在未应用格式化程序的情况下访问BatchID的值?

         $(function () {
        $('#search').html('');
        $('#grid').GridUnload();
        Grid.Home.Grid.setupGrid($('#grid'), $('#pager'), $('#search'));
    });
    Grid.Home.Grid = {
        setupGrid: function (grid, pager, search) {
            grid.jqGrid({
                colNames: ['Batch ID', 'Job Start Date', 'Job Finish Date', 'Contacts', 'Statements', 'Selected', 'Sent', 'Queued', 'Action'],
                colModel: [
                    { name: 'BatchID', index: 'BatchID', width: 35, formatter: batch },
                    { name: 'JobStartDate', index: 'JobStartDate', width: 55, sortable: false, search: false, formatoptions: { srcformat: 'y/m/dTH:i:s', newformat: 'm/d/Y g:i:s A'} },
                    { name: 'JobFinishDate', index: 'JobFinishDate', width: 55, sortable: false, search: false, formatoptions: { srcformat: 'y/m/dTH:i:s', newformat: 'm/d/Y g:i:s A'} },
                    { name: 'Contacts', index: 'Contacts', width: 20, align: 'right', sortable: false, search: false },
                    { name: 'Statements', index: 'Statements', width: 20, align: 'right', sortable: false, search: false }, //'currencyFormatter' },
                    {name: 'Selected', index: 'Selected', width: 20, align: 'right', sortable: false, search: false },
                    { name: 'Sent', index: 'Sent', width: 30, sortable: false, search: false, sortable: false, search: false },
                    { name: 'Queued', index: 'Queued', width: 30, sortable: false, search: false },
                    { name: 'Action', index: 'Action', width: 50, sortable: false, search: false, formatter: action}
                  ],
                loadonce: false,
                pager: '#pager',
                sortname: 'BatchID',
                sortorder: "desc",
                onCellSelect: function (rowid, cellcontent, e) {
                    if (cellcontent == '8') {
                        var rowObject = grid.getRowData(rowid);
                            if (rowObject.Action === 'Add To Queue'){
                        $.ajax({
                            type: 'POST',
                            url: '<%= Url.Action("UpdateBatch") %>',
                            data: { BatchID: rowObject.BatchID },
                            beforeSend: function (xhr) {
                                blockElement($('.grid'));
                            },
                            complete: function (xhr, status) {
                                unblockElement($('.grid'));
                            },
                            success: function (data) {
                                var title = $('<h6>', { html: data.Title, 'class': 'jgrowl-header' });
                                $.jGrowl(data.Message, {
                                    theme: 'ui-state-highlight',
                                    life: 5000,
                                    beforeOpen: function (e, m, o) {
                                        e.children('.header').html(title);
                                    }
                                });
                                grid.trigger("reloadGrid");
                            }

                        }); }
                    };
                },
                url: '<%= Url.Action("GetBatchList") %>'
            }).navGrid('#pager', { edit: false, add: false, del: false, search: false, refresh: true });
            grid.filterToolbar({ stringResult: true, searchOnEnter: false });
        }
    };

    function action(cellvalue, options, rowObject) {
        if (rowObject.Action ==  'Add To Queue'){
            options.colModel.classes = 'show-link';
            return 'Add To Queue'
        }
        else {
            options.colModel.classes = '';
            return '';
        }

    };

    function batch(cellvalue, options, rowObject) {
     var t = rowObject.BatchID; 
        return '<a href="/CustomerStatements/Statements?BatchID=' + t + '" style="display: block">' + t + ' </a>';
    };

</script>

1 个答案:

答案 0 :(得分:0)

我使用了jsonmap并添加了另一个被隐藏的列来保存batchID未格式化的值。现在网格看起来像这样。

 Grid.Home.Grid = {
        setupGrid: function (grid, pager, search) {
            grid.jqGrid({
                colNames: ['Batch', 'Job Start Date', 'Job Finish Date', 'Contacts', 'Statements', 'Selected', 'Sent', 'Queued', 'Action', ''],
                colModel: [
                    { name: 'BatchIDLink ', index: 'BatchID', jsonmap: 'BatchID', width: 35, formatter: link },
                    { name: 'JobStartDate', index: 'JobStartDate', width: 55, sortable: false, search: false, formatoptions: { srcformat: 'y/m/dTH:i:s', newformat: 'm/d/Y g:i:s A'} },
                    { name: 'JobFinishDate', index: 'JobFinishDate', width: 55, sortable: false, search: false, formatoptions: { srcformat: 'y/m/dTH:i:s', newformat: 'm/d/Y g:i:s A'} },
                    { name: 'Contacts', index: 'Contacts', width: 20, align: 'right', sortable: false, search: false },
                    { name: 'Statements', index: 'Statements', width: 20, align: 'right', sortable: false, search: false }, //'currencyFormatter' },
                    {name: 'Selected', index: 'Selected', width: 20, align: 'right', sortable: false, search: false },
                    { name: 'Sent', index: 'Sent', width: 30, sortable: false, search: false, sortable: false, search: false },
                    { name: 'Queued', index: 'Queued', width: 30, sortable: false, search: false },
                    { name: 'Action', index: 'Action', width: 50, sortable: false, search: false, formatter: queue },
                    { name: 'BatchIDVal', index: 'BatchID', jsonmap: 'BatchID', hidden: true }

                  ],