Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 免费jqGrid搜索按钮在第二次单击时不起作用_Javascript_Jquery_Jqgrid_Free Jqgrid - Fatal编程技术网

Javascript 免费jqGrid搜索按钮在第二次单击时不起作用

Javascript 免费jqGrid搜索按钮在第二次单击时不起作用,javascript,jquery,jqgrid,free-jqgrid,Javascript,Jquery,Jqgrid,Free Jqgrid,搜索按钮在第一次单击时起作用,但一旦通过单击X(关闭按钮)或运行搜索(设置为搜索后关闭)将其关闭,它将不会打开,控制台中也没有错误,因此我无法确定问题所在以及如何修复 var previouslySelectedRow = null; var rowIsSelected = null; var previousRowIsSelected = null; var currentRowId; var currentCount; var cancelEditing = function(theGrid

搜索按钮在第一次单击时起作用,但一旦通过单击X(关闭按钮)或运行搜索(设置为搜索后关闭)将其关闭,它将不会打开,控制台中也没有错误,因此我无法确定问题所在以及如何修复

var previouslySelectedRow = null;
var rowIsSelected = null;
var previousRowIsSelected = null;
var currentRowId;
var currentCount;
var cancelEditing = function(theGrid) {
    var lrid;
    if (typeof previouslySelectedRow !== "undefined") {
        // cancel editing of the previous selected row if it was in editing state.
        // jqGrid hold intern savedRow array inside of jqGrid object,
        // so it is safe to call restoreRow method with any id parameter
        // if jqGrid not in editing state
        theGrid.jqGrid('restoreRow', previouslySelectedRow);

        // now we need to restore the icons in the formatter:"actions"
        lrid = $.jgrid.jqID(previouslySelectedRow);
        $("tr#" + lrid + " div.ui-inline-edit").show();
        $("tr#" + lrid + " div.ui-inline-save, " + "tr#" + lrid + " div.ui-inline-cancel").hide();
    }
};

var parsedResult = JSON.parse(DecodeAscii(result));
ShowDebugNotification("DEBUG INFO(" + ajaxCall + "): <br />" + result, false);
$("#productsTable").jqGrid({
        data: parsedResult,
        datatype: "local",
        loadonce: true,
        height: 'auto',
        marginLeft: 'auto',
        colNames: [
            'Product Id', 'Add', 'Product Name', 'Product Code', 'Customer Price'
        ],
        colModel: [
            { name: 'Id', width: 0, hidden:true },
            { name: "actions", template: "actions", width: 50, formatoptions:{
                delbutton: false,
                editbutton: false
            } },
            { name: 'Name', index: 'Name', width: 550, search: true, searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']} },
            { name: 'ProductCode', index: 'ProductCode', width: 150, search: true, searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']} },
            { name: 'Price', index: 'Price', width: 100, search: false, formatter: 'currency', formatoptions:{decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$"}}
        ],
        rowNum: 15,
        rowList: [5, 10, 15, 20],
        pager: true,
        gridView: true,
        viewrecords: true,
        iconSet: "jQueryUI",
        sortname: 'Name',
        sortorder: 'asc',
        inlineEditing: { keys: false },
        actionsNavOptions: {
            addToCarticon: "ui-icon-cart",
            addToCarttitle: "Add item to the cart",
            custom: [
                { action: "addToCart", position: "first", onClick: function (options) { 
                    var rowData = $('#productsTable').getRowData(options.rowid);
                    var cartButton = $(".ui-icon", "#jAddToCartButton_"+options.rowid);
                    if(cartButton.hasClass("ui-icon-cancel")){
                        cart.shift(rowData);
                        cartButton.removeClass("ui-icon-cancel");
                        cartButton.addClass("ui-icon-cart");
                    }
                    else if(cartButton.hasClass("ui-icon-cart")){
                        cart.push(rowData);
                        cartButton.removeClass("ui-icon-cart");
                        cartButton.addClass("ui-icon-cancel");
                    }
                }
            }]
        },
        loadComplete: function() {
            $("#add-product-dialog-loading-message").hide();
            $(".spinner").hide();
            $("#add-product-dialog-form").dialog("open");

            //for each object in cart
            //if prodcut ID matches product Id in product 
            //grid then set button to a cancel icon
            if(cart.length !== 0){
                var cartIds = [];
                var jsonCart = JSON.stringify(cart);
                var parsedJsonCart = JSON.parse(jsonCart);
                var productsInCart = $.grep(parsedJsonCart, function(el, i){
                    cartIds.push(el.Id);
                });

                var currentRows = $('#productsTable').getRowData();
                var shownProductsThatAreInCart = $.grep(currentRows, function (el, i) {
                    return $.inArray(el.Id, cartIds) !== -1;
                });

                if(shownProductsThatAreInCart.length > 0){
                    var rowIds = $(this).jqGrid('getDataIDs');
                    $.each(rowIds, function(k, v) {
                        rowData = $('#productsTable').getRowData(v);

                        if($.inArray(rowData['Id'], cartIds) !== -1){
                            alert("Matched Product:\nRowData['id'] = " + rowData['Id'] + "\nto\nProduct in cart: " + cartIds.Id);
                            $(".ui-icon", "#jAddToCartButton_"+v).removeClass("ui-icon-cart");
                            $(".ui-icon", "#jAddToCartButton_"+v).addClass("ui-icon-cancel");
                        }
                    });
                }
            }
        },
        gridComplete: function() {
        }
    });
    $("#productsTable").jqGrid("navGrid", {edit:false,add:false,del:false},
    {},// use default settings for edit
    {},// use default settings for add
    {},// delete instead that del:false we need this
    {multipleSearch:false,overlay:false,ignoreCase:true,closeAfterSearch:true,closeOnEscape:true,showQuery:true});
var previouslySelectedRow=null;
var rowIsSelected=null;
var previousRowIsSelected=null;
var-currentRowId;
无功电流计数;
var cancelEditing=函数(网格){
var-lrid;
if(先前选择的类型Row!=“未定义”){
//如果上一个选定行处于编辑状态,则取消对该行的编辑。
//jqGrid在jqGrid对象内保留intern savedRow数组,
//因此,使用任何id参数调用restoreRow方法都是安全的
//如果jqGrid未处于编辑状态
jqGrid('restoreRow',以前选择的row);
//现在我们需要恢复格式化程序中的图标:“操作”
lrid=$.jgrid.jqID(以前选择的row);
$(“tr#“+lrid+“div.ui-inline-edit”).show();
$(“tr#“+lrid+”div.ui-inline-save,“+”tr#“+lrid+”div.ui-inline-cancel”).hide();
}
};
var parsedResult=JSON.parse(解码ASCII(结果));
ShowDebugNotification(“调试信息(“+ajaxCall+”):
“+结果,false); $(“#产品稳定”).jqGrid({ 数据:parsedResult, 数据类型:“本地”, 有一次:是的, 高度:“自动”, marginLeft:'自动', 姓名:[ “产品Id”、“添加”、“产品名称”、“产品代码”、“客户价格” ], colModel:[ {name:'Id',宽度:0,隐藏:true}, {名称:“操作”,模板:“操作”,宽度:50,格式选项:{ 德尔巴顿:错, 编辑按钮:false } }, {name:'name',index:'name',width:550,search:true,searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']}, {name:'ProductCode',index:'ProductCode',width:150,search:true,searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']}, {name:'Price',index:'Price',width:100,search:false,formatter:'currency',formattoptions:{decimalSeparator:“.”,thousandsSeparator:“,”,decimalPlaces:2,前缀:“$”}} ], rowNum:15, 行列表:[5,10,15,20], 寻呼机:是的, gridView:没错, viewrecords:是的, iconSet:“jQueryUI”, sortname:'名称', 排序器:“asc”, inlineEditing:{keys:false}, 行动方案:{ AddToPartition:“用户界面图标购物车”, addToCarttitle:“将商品添加到购物车”, 自定义:[ {操作:“addToCart”,位置:“first”,onClick:function(options){ var rowData=$('#productsTable').getRowData(options.rowid); var cartButton=$(“.ui图标”,“jAddToCartButton”+options.rowid); if(cartButton.hasClass(“ui图标取消”)){ 购物车班次(行数据); cartButton.removeClass(“ui图标取消”); addClass(“ui图标购物车”); } else if(cartButton.hasClass(“ui图标购物车”)){ 购物车推送(rowData); cartButton.removeClass(“ui图标购物车”); cartButton.addClass(“ui图标取消”); } } }] }, loadComplete:function(){ $(“#添加产品对话框加载消息”).hide(); $(“.spinner”).hide(); $(“#添加产品对话框窗体”)。对话框(“打开”); //对于购物车中的每个对象 //如果prodcut ID与产品中的产品ID匹配 //网格然后将按钮设置为取消图标 如果(购物车长度!==0){ var cartIds=[]; var jsonCart=JSON.stringify(cart); var parsedJsonCart=JSON.parse(jsonCart); var productsInCart=$.grep(parsedJsonCart,函数(el,i){ 推力(el.Id); }); var currentRows=$('#productsTable').getRowData(); var shownproductsthatareinformat=$.grep(当前行,函数(el,i){ 返回$.inArray(el.Id,cartIds)!=-1; }); 如果(显示的产品长度大于0){ var rowIds=$(this).jqGrid('getdataid'); $.each(rowIds,function(k,v){ rowData=$('#productsTable')。getRowData(v); if($.inArray(rowData['Id',cartIds)!=-1){ 警报(“匹配的产品:\nRowData['id']=“+rowData['id']+”\n购物车中的产品:“+cartIds.id”); $(“.ui图标”,“jAddToCartButton”+v).removeClass(“ui图标购物车”); $(“.ui图标”,“jAddToCartButton”+v).addClass(“ui图标取消”); } }); } } }, gridComplete:函数(){ } }); $(“#productsTable”).jqGrid(“navGrid”,{edit:false,add:false,del:false}, {},//使用默认设置进行编辑 {},//使用添加的默认设置 {},//删除del:false,我们需要这个 {multipleSearch:false,overlay:false,ignoreCase:true,closeAfterSearch:true,closeOnEscape:true,showQuery:true});
我不认为这是一个错误,因为我已经看到了许多演示它应该如何工作,我猜我有一个错误的配置,请看一下我的代码,并帮助确定问题

需要记住的一件事是,我通过一个返回json的ajax调用获取数据以加载网格,所有操作都在客户机上完成,根本没有将数据发回服务器


谢谢大家!

主要问题是Searchi和
{
    multipleSearch: false, // it's default and can be removed
    overlay: false, // !!! the option make the problem
    ignoreCase: true, // it's not exist at all
    closeAfterSearch: true,
    closeOnEscape: true,
    showQuery: true
}