jqGrid启用ondblClickRow事件上的导航栏保存图标

时间:2013-11-26 09:41:55

标签: javascript jquery jqgrid

我在ondblClickRow事件上设置了jqGrid行编辑。双击一行后,我想在导航栏上启用保存图标。我怎么能这样做。

ondblClickRow: function (rowid) {

        jQuery(this).jqGrid('editRow', rowid, true, null, null);
    },

请帮忙 感谢

jQuery(document).ready(function($){

grid = $("#SupplementsGrid");
getColumnIndexByName = function (grid, columnName) {
    var cm = grid.jqGrid('getGridParam', 'colModel'), i = 0, l = cm.length;
    for (; i < l; i += 1) {
        if (cm[i].name === columnName) {
            return i; // return the index
        }
    }
    return -1;
};

var DataEditUrl = baseSiteURL + 'HotelSupplements/Edit';
var DataAddUrl = baseSiteURL + 'HotelSupplements/Create';
var lastSel;
grid.jqGrid({
    url: gridDataUrl,
    editurl: DataEditUrl,
    mtype: 'POST',
    datatype: 'local',
    colNames: ['StartDate', 'EndDate', 'Man', 'RoomType', 'SuppType', 'Supplement', 'BuyRate', 'Val', 'ChargeBy', 'ChargeOn', 'Status', 'DaysOfTheWeek', 'HotelSupplementID'],
    colModel: [
        {
            name: 'StartDate', index: 'StartDate',
            resizable: true, formatter: 'date', editoptions: { dataInit: function (elem) { $(elem).datepicker({ minDate: 0 }); } }, editable: true, formatoptions: { newformat: 'm/d/Y' }, width: 125, align: 'left',
            editrules: { custom: true, custom_func: function (value, colname) { return validateTwoDates('StartDate', 'EndDate', grid.jqGrid('getGridParam', 'selrow')) } }
        },
                 { name: 'EndDate', index: 'EndDate', formatter: 'date', editoptions: { dataInit: function (elem) { $(elem).datepicker({ minDate: 0 }); } }, editable: true, formatoptions: { newformat: 'm/d/Y' }, width: 100, align: 'left' },
                 { name: 'Mandatory', index: 'Mandatory', editable: true, width: 45, align: 'center', edittype: "checkbox", editoptions: { value: "true:false" } },
                 {
                     name: 'RoomTypes', index: 'RoomTypes', width: 300, editable: true, edittype: 'select',
                     editoptions: {
                         value: roomTypesFormatterEdit,
                         custom_element: function (value, options) {
                             return $.jgrid.createEl.call(this, "select",
                                 $.extend(true, {}, options, { custom_element: null, custom_value: null }),
                                 value);
                         },
                         custom_value: function ($elem, operation, value) {
                             if (operation === "get") {
                                 return $elem.val();
                             }
                         },
                         multiple: true
                     },
                     align: 'left', formatter: roomTypesFormatter
                 },
                 {
                     name: 'SupplementTypeID', index: 'SupplementTypeID', width: 115, align: 'left', formatter: supplementTypesFormatter, editable: true, edittype: 'select',

                     editoptions: {
                         value: supplementTypesFormatterEdit,
                         dataEvents: [
                  {
                      type: 'change', // keydown
                      fn: function (e) {
                          suppTId = $("#" + this.id).val();
                          myValue = '';
                          filterSupplementsByTypeID(suppTId);
                          //grid.jqGrid('setColProp', 'SupplementID', { editoptions: { value: supplementsFormatterEdit} });                 
                          var row = $(e.target).closest('tr.jqgrow');
                          var rowId = row.attr('id');
                          for (k = 0; k < filteredSupplements.length; k++) {
                              myValue += '<option value=' + filteredSupplements[k].SupplementID + '>' + filteredSupplements[k].Name + '</option>';
                          }
                          $("select#" + rowId + "_SupplementID", row[0]).html(myValue);
                      }
                  }
                         ]
                     }
                 },
                 {
                     name: 'SupplementID', index: 'SupplementID', width: 120, align: 'left', formatter: supplementsFormatter, editable: true, edittype: 'select',

                     editoptions: {
                         value: supplementsFormatterEdit
                     }
                 },
                 { name: 'BuyRate', index: 'BuyRate', editable: true, width: 90, align: 'left', sorttype: 'int', editrules: { custom: true, custom_func: validNum } },
                 {
                     name: 'ChargeValueTypeID', index: 'ChargeValueTypeID', width: 70, align: 'left', formatter: ChargeValueTypesFormatter, editable: true, edittype: 'select',

                     editoptions: {
                         value: chargeValueTypesFormatterEdit
                     }
                 },
                 {
                     name: 'ChargeByTypeID', index: 'ChargeByTypeID', width: 100, align: 'left', formatter: ChargeByTypesFormatter, editable: true, edittype: 'select',

                     editoptions: {
                         value: chargeByTypesFormatterEdit
                     }
                 },
                 {
                     name: 'ChargeOnTypeID', index: 'ChargeOnTypeID', width: 100, align: 'left', formatter: ChargeOnTypesFormatter, editable: true, edittype: 'select',

                     editoptions: {
                         value: chargeOnTypesFormatterEdit
                     }
                 },
                 { name: 'Active', index: 'Active', width: 60, align: 'left', editable: true, edittype: "checkbox", editoptions: { value: "true:false" } },
                 {
                     name: 'DaysOfTheWeek', index: 'DaysOfTheWeek', width: 250, align: 'left', editable: true, edittype: 'select', formatter: function (cellvalue, options, rowObject) {
                         output = '';
                         if (rowObject.MonValid) {
                             output += 'Monday,';
                         } if (rowObject.TueValid) {
                             output += 'Tuesday,';
                         } if (rowObject.WedValid) {
                             output += 'Wednesday,';
                         } if (rowObject.ThuValid) {
                             output += 'Thursday,';
                         } if (rowObject.FriValid) {
                             output += 'Friday,';
                         } if (rowObject.SatValid) {
                             output += 'Saturday,';
                         } if (rowObject.SunValid) {
                             output += 'Sunday,';
                         }
                         output = output.substring(0, output.length - 1);
                         if (output != '') {
                             return output;
                         } else {
                             return cellvalue;
                         }

                     }, editoptions: {
                         value: 'Monday:Monday;Tuesday:Tuesday;Wednesday:Wednesday;Thursday:Thursday;Friday:Friday;Saturday:Saturday;Sunday:Sunday',
                         custom_element: function (value, options) {
                             return $.jgrid.createEl.call(this, "select",
                                 $.extend(true, {}, options, { custom_element: null, custom_value: null }),
                                 value);
                         },
                         custom_value: function ($elem, operation, value) {
                             if (operation === "get") {
                                 return $elem.val();
                             }
                         },
                         multiple: true
                     }
                 },
    {
        name: 'HotelSupplementID',
        index: 'HotelSupplementID',
        width: 25, editable: true,
        editrules: {
            //required: true,
            edithidden: true
        }, hidden: true,
        editoptions: {
            dataInit: function (element) {
                //jq(element).attr("readonly", "readonly");
            }
        }
    }
    ],
    jsonReader: {
        root: 'Rows',
        page: 'Page',
        total: 'Total',
        records: 'Records',
        repeatitems: false,
        id: "12",
    },
    subGrid: true,
    subGridRowExpanded: function (subgrid_id, row_id) {

        var subgrid_table_id;
        subgrid_table_id = subgrid_id + "_t";

        jQuery("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table>");
        jQuery("#" + subgrid_table_id).jqGrid({
            url: supplementChildRateurl + '?id=' + row_id,
            datatype: "json",
            colNames: ['MinAge', 'MaxAge', 'BuyRate', ],
            colModel: [
              { name: "MinAge", index: "MinAge", width: 130 },
              { name: "MaxAge", index: "MaxAge", width: 130 },
              { name: "BuyRate", index: "BuyRate", width: 130 }
            ],
            height: '100%',
            rowNum: 20,
        });
    },
    ondblClickRow: function (rowid) {
        jQuery(this).jqGrid('editRow', rowid, true, null, null);
    },
    onSelectRow: function (id) {
        if (id && id !== lastSel) {
            jQuery(this).restoreRow(lastSel);
            lastSel = id;
        }
    },
    resizeStop: function (newwidth, index) {
        jQuery(this.bDiv).find('>div:first>table.ui-jqgrid-btable:first')
        .jqGrid('setGridWidth', newwidth);
    },
    paging: true,
    loadonce: true,
    loadComplete: function (data) {
        var iCol = getColumnIndexByName(grid, 'act');
        jQuery("#SupplementsGrid").children("tbody")
        .children("tr.jqgrow")
        .children("td:nth-child(" + (iCol + 1) + ")")
        .each(function () {
            $("<div>",
            {
                title: "Custom",
                mouseover: function () {
                    $(this).addClass('ui-state-hover');
                },
                mouseout: function () {
                    $(this).removeClass('ui-state-hover');
                },
                click: function (e) {

                }
            }
        ).css({ "margin-left": "5px", float: "left" })
        .addClass("ui-pg-div ui-inline-custom")
        .append('<span class="ui-icon ui-icon-document"></span>')
        .appendTo($(this).children("div"));
        });

        jQuery("#SupplementsGrid").trigger("reloadGrid");
        jQuery("#SuccessMsg").html("");



        //$("#SupplementsGrid").jqGrid('setGridParam',{datatype:'local'});
        var rowIds = $("#SupplementsGrid").jqGrid('getDataIDs');
        $.each(rowIds, function (i, row) {

            var rowData = $("#SupplementsGrid").getRowData(row);
            if (rowData.InputType == 'select') {


            }
        });
    },
    gridview: true,
    rowNum: 20,
    rowList: [5, 10, 20, 50, 100],
    pager: jQuery('#pager'),
    emptyrecords: "Nothing to display",
    sortable: true,
    sortname: 'StartDate',
    sortorder: "desc",
    viewrecords: true,
    height: 'auto',
    width: 1068,
    caption: "Supplements",
});
$('#SupplementsGrid').jqGrid('navGrid', '#pager',
      {
          edit: false,
          add: false,
          del: false,
          search: false
      },
      //edit options
{ url: DataEditUrl },
//add options
{ url: DataAddUrl },
//delete options
{ url: '/home1/DeleteUserData' }
   );
    parameters = {
        edit: true,
        editicon: "ui-icon-pencil",
        add: true,
        addicon: "ui-icon-plus",
        save: true,
        saveicon: "ui-icon-disk",
        cancel: true,
        cancelicon: "ui-icon-cancel",
        editParams: {
            keys: false,
            oneditfunc: null,
            successfunc: function (val) {
                if (val.responseText != "") {
                    // alert(val.responseText);
                    $(this).jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
                }
            },
            url: null,
            extraparam: {
                EmpId: function () {
                    var sel_id = $('#SupplementsGrid').jqGrid('getGridParam', 'selrow');
                    var value = $('#SupplementsGrid').jqGrid('getCell', sel_id, '_id');
                    return value;
                }
            },
            aftersavefunc: null,
            errorfunc: null,
            afterrestorefunc: null,
            restoreAfterError: true,
            mtype: "POST"
        },
        addParams: {
            useDefValues: true,
            addRowParams: {
                keys: true,
                extraparam: {},
                // oneditfunc: function () { alert(); },
                successfunc: function (val) {
                    if (val.responseText != "") {
                        //alert(val.responseText);
                        $(this).jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
                    }
                }
            }
        }
    }
    jQuery("#SupplementsGrid").jqGrid('inlineNav', '#pager', parameters);

});

1 个答案:

答案 0 :(得分:1)

您没有公布您的实施细节,但我可以假设您使用inlineNav方法。 inlineNav使用简单规则生成所有导航器图标的id属性值。所有内联编辑按钮的ID都是根据网格的ID和后缀设置的:“_ iladd”,“_iledit”,“_ ifave”,“_ ilcancel”。例如,网格具有id="list",则“保存”按钮的ID将为"list_ilsave"。如果需要,您可以通过ID对其进行寻址来禁用任何按钮(例如$("#list_ilsave").removeClass('ui-state-disabled'); - 启用保存按钮和$("#list_ilsave").addClass('ui-state-disabled'); - 禁用它。保存或放弃更改后,您可以使用aftersavefunc的{​​{1}}和afterrestorefunc选项更改导航按钮的状态。以同样的方式,您可以使用editRow来模拟任何按钮上的点击。例如,jQuery.click将模拟单击“保存”按钮。