Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 光滑的网格不使用Ajax调用刷新_Javascript_Java_Jquery_Ajax_Jsp - Fatal编程技术网

Javascript 光滑的网格不使用Ajax调用刷新

Javascript 光滑的网格不使用Ajax调用刷新,javascript,java,jquery,ajax,jsp,Javascript,Java,Jquery,Ajax,Jsp,我有一个用页面加载的sclick网格。现在,我希望单击复选框(我使用ajax调用获取新数据)就可以用新数据替换slick网格上的数据,并且复选框应该保留其值。我可以看到,尽管服务器提供了新数据,但光滑的网格不会刷新,复选框也不会保留页面加载的状态(即选中) Jsp: <c:if test="${info == null or empty info}"> <div id="result" class="ui-widget" style="

我有一个用页面加载的sclick网格。现在,我希望单击复选框(我使用ajax调用获取新数据)就可以用新数据替换slick网格上的数据,并且复选框应该保留其值。我可以看到,尽管服务器提供了新数据,但光滑的网格不会刷新,复选框也不会保留页面加载的状态(即选中)

Jsp:

 <c:if test="${info == null or empty info}">
                    <div id="result" class="ui-widget" style="float:center">
                    <strong>No results found !</strong>
                    </div>
                </c:if>
  var dataView;
      var grid;
      var data = [];
      var options = {
        enableCellNavigation: true,
        showHeaderRow: true,
        headerRowHeight: 40,
        explicitInitialization: true,
        enableColumnReorder: false,
        multiColumnSort: true,
        defaultSortAsc:false,

      };
      var columns = [];
      var columnFilters = {};
      {  
      ....
      ...

      }


          $(function () {

               var holder=new Array();
                var i=0;
                 var d = (data[i] = {});
                 <c:forEach var="message" items="${info}" >
                 holder[i]={
                            id: i,
                            remove: '<c:out value="${message.id}"/>' ,
                            name: '<c:out value="${message.name}"/>',
                            status: '<c:out value="${message.status}"/>'
                            }
                      i++; 
                  </c:forEach>

            dataView = new Slick.Data.DataView();
            grid = new Slick.Grid("#rulesGrid", dataView, columns, options);
            var pager = new Slick.Controls.Pager(dataView, grid, $("#rulesPager"));

            grid.onSort.subscribe(function (e, args){
            dataView.fastSort(args.sortCol.field, args.sortAsc);
            grid.render();
            });


            dataView.onRowCountChanged.subscribe(function (e, args) {
              grid.updateRowCount();
              grid.invalidateRows(args.rows);//new change
              grid.render();
            });



            grid.init();
            dataView.beginUpdate();
            dataView.setItems(holder);
            dataView.setFilter(filter);
            dataView.endUpdate();
            dataView.refresh();
            grid.invalidate();
            grid.updateRowCount();
            grid.render();
          });
function PopulateGrids(){
    var showInactive,showSubmitted;
    if($("#showInactive").is(':checked')){
        showInactive=true;
    }
    else if($("#showSubmitted").is(':checked')){
        showSubmitted=true;
    }
    else if($("#showSubmitted").is(':checked') && $("#showInactive").is(':checked'))
        {
        showInactive=true;
        showSubmitted=true;
        }


    jQuery.ajax( {
        async : false,
        cache : false,
        url : "/application/createNewResult/details?showInactive="+encodeURI(showInactive)+"&showSubmitted="+encodeURI(showSubmitted) ,
        type : 'GET',
        contentType: "application/json; charset=utf-8", 
        dataType : 'json',
        success : function() {
            alert("showInactive: "+showInactive+" show submitted: "+showSubmitted);
            console.log("info:",'<c:out value="${info}"/>');
            if(showInactive)
                $("#showInactive").prop('checked', true);
            else if(showSubmitted )
                $("#showSubmitted").prop('checked', true);          
        },
        complete : function(request, status) {
            if (status == undefined || status == "error" || status == "parsererror") {
                alert('error in searching Invalid or submitted records: '+status);
                window.location.href="/application/createNewResult/";
            } else if (status != 'success'){
                alert('error in searching Invalid or submitted records: '+status);

            }

        }
    });
}

未找到任何结果
光滑网格:

 <c:if test="${info == null or empty info}">
                    <div id="result" class="ui-widget" style="float:center">
                    <strong>No results found !</strong>
                    </div>
                </c:if>
  var dataView;
      var grid;
      var data = [];
      var options = {
        enableCellNavigation: true,
        showHeaderRow: true,
        headerRowHeight: 40,
        explicitInitialization: true,
        enableColumnReorder: false,
        multiColumnSort: true,
        defaultSortAsc:false,

      };
      var columns = [];
      var columnFilters = {};
      {  
      ....
      ...

      }


          $(function () {

               var holder=new Array();
                var i=0;
                 var d = (data[i] = {});
                 <c:forEach var="message" items="${info}" >
                 holder[i]={
                            id: i,
                            remove: '<c:out value="${message.id}"/>' ,
                            name: '<c:out value="${message.name}"/>',
                            status: '<c:out value="${message.status}"/>'
                            }
                      i++; 
                  </c:forEach>

            dataView = new Slick.Data.DataView();
            grid = new Slick.Grid("#rulesGrid", dataView, columns, options);
            var pager = new Slick.Controls.Pager(dataView, grid, $("#rulesPager"));

            grid.onSort.subscribe(function (e, args){
            dataView.fastSort(args.sortCol.field, args.sortAsc);
            grid.render();
            });


            dataView.onRowCountChanged.subscribe(function (e, args) {
              grid.updateRowCount();
              grid.invalidateRows(args.rows);//new change
              grid.render();
            });



            grid.init();
            dataView.beginUpdate();
            dataView.setItems(holder);
            dataView.setFilter(filter);
            dataView.endUpdate();
            dataView.refresh();
            grid.invalidate();
            grid.updateRowCount();
            grid.render();
          });
function PopulateGrids(){
    var showInactive,showSubmitted;
    if($("#showInactive").is(':checked')){
        showInactive=true;
    }
    else if($("#showSubmitted").is(':checked')){
        showSubmitted=true;
    }
    else if($("#showSubmitted").is(':checked') && $("#showInactive").is(':checked'))
        {
        showInactive=true;
        showSubmitted=true;
        }


    jQuery.ajax( {
        async : false,
        cache : false,
        url : "/application/createNewResult/details?showInactive="+encodeURI(showInactive)+"&showSubmitted="+encodeURI(showSubmitted) ,
        type : 'GET',
        contentType: "application/json; charset=utf-8", 
        dataType : 'json',
        success : function() {
            alert("showInactive: "+showInactive+" show submitted: "+showSubmitted);
            console.log("info:",'<c:out value="${info}"/>');
            if(showInactive)
                $("#showInactive").prop('checked', true);
            else if(showSubmitted )
                $("#showSubmitted").prop('checked', true);          
        },
        complete : function(request, status) {
            if (status == undefined || status == "error" || status == "parsererror") {
                alert('error in searching Invalid or submitted records: '+status);
                window.location.href="/application/createNewResult/";
            } else if (status != 'success'){
                alert('error in searching Invalid or submitted records: '+status);

            }

        }
    });
}
var数据视图;
var网格;
var数据=[];
变量选项={
enableCellNavigation:true,
是的,
头灯:40,
明确化:正确,
enableColumnReorder:false,
多列排序:正确,
defaultSortAsc:false,
};
var列=[];
var columnFilters={};
{  
....
...
}
$(函数(){
var holder=新数组();
var i=0;
变量d=(数据[i]={});
持有人[i]={
id:我,
删除:“”,
名称:“”,
状态:“”
}
i++;
dataView=new Slick.Data.dataView();
grid=new Slick.grid(#rulesGrid),dataView,columns,options);
var pager=new Slick.Controls.pager(dataView,grid,$(“#rulesPager”);
grid.onSort.subscribe(函数(e,args){
fastSort(args.sortCol.field,args.sortAsc);
grid.render();
});
dataView.onRowCountChanged.subscribe(函数(e,args){
grid.updateRowCount();
grid.invalidateRows(args.rows);//新更改
grid.render();
});
grid.init();
dataView.beginUpdate();
dataView.setItems(持有者);
setFilter(filter);
endUpdate();
refresh();
grid.invalidate();
grid.updateRowCount();
grid.render();
});
Ajax调用:

 <c:if test="${info == null or empty info}">
                    <div id="result" class="ui-widget" style="float:center">
                    <strong>No results found !</strong>
                    </div>
                </c:if>
  var dataView;
      var grid;
      var data = [];
      var options = {
        enableCellNavigation: true,
        showHeaderRow: true,
        headerRowHeight: 40,
        explicitInitialization: true,
        enableColumnReorder: false,
        multiColumnSort: true,
        defaultSortAsc:false,

      };
      var columns = [];
      var columnFilters = {};
      {  
      ....
      ...

      }


          $(function () {

               var holder=new Array();
                var i=0;
                 var d = (data[i] = {});
                 <c:forEach var="message" items="${info}" >
                 holder[i]={
                            id: i,
                            remove: '<c:out value="${message.id}"/>' ,
                            name: '<c:out value="${message.name}"/>',
                            status: '<c:out value="${message.status}"/>'
                            }
                      i++; 
                  </c:forEach>

            dataView = new Slick.Data.DataView();
            grid = new Slick.Grid("#rulesGrid", dataView, columns, options);
            var pager = new Slick.Controls.Pager(dataView, grid, $("#rulesPager"));

            grid.onSort.subscribe(function (e, args){
            dataView.fastSort(args.sortCol.field, args.sortAsc);
            grid.render();
            });


            dataView.onRowCountChanged.subscribe(function (e, args) {
              grid.updateRowCount();
              grid.invalidateRows(args.rows);//new change
              grid.render();
            });



            grid.init();
            dataView.beginUpdate();
            dataView.setItems(holder);
            dataView.setFilter(filter);
            dataView.endUpdate();
            dataView.refresh();
            grid.invalidate();
            grid.updateRowCount();
            grid.render();
          });
function PopulateGrids(){
    var showInactive,showSubmitted;
    if($("#showInactive").is(':checked')){
        showInactive=true;
    }
    else if($("#showSubmitted").is(':checked')){
        showSubmitted=true;
    }
    else if($("#showSubmitted").is(':checked') && $("#showInactive").is(':checked'))
        {
        showInactive=true;
        showSubmitted=true;
        }


    jQuery.ajax( {
        async : false,
        cache : false,
        url : "/application/createNewResult/details?showInactive="+encodeURI(showInactive)+"&showSubmitted="+encodeURI(showSubmitted) ,
        type : 'GET',
        contentType: "application/json; charset=utf-8", 
        dataType : 'json',
        success : function() {
            alert("showInactive: "+showInactive+" show submitted: "+showSubmitted);
            console.log("info:",'<c:out value="${info}"/>');
            if(showInactive)
                $("#showInactive").prop('checked', true);
            else if(showSubmitted )
                $("#showSubmitted").prop('checked', true);          
        },
        complete : function(request, status) {
            if (status == undefined || status == "error" || status == "parsererror") {
                alert('error in searching Invalid or submitted records: '+status);
                window.location.href="/application/createNewResult/";
            } else if (status != 'success'){
                alert('error in searching Invalid or submitted records: '+status);

            }

        }
    });
}
函数PopulateGrids(){
var showInactive,showSubmitted;
如果($(“#showInactive”)。是(':选中的')){
showInactive=true;
}
如果($(“#showSubmitted”)。为(“:选中”),则为else{
showSubmitted=true;
}
如果($(“#showSubmitted”).is(':checked')&&($(“#showInactive”).is(':checked'))
{
showInactive=true;
showSubmitted=true;
}
jQuery.ajax({
async:false,
cache:false,
url:“/application/createNewResult/details?showInactive=“+encodeURI(showInactive)+”&showSubmitted=“+encodeURI(showSubmitted),
键入:“GET”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:函数(){
警报(“showInactive:+showInactive+”显示已提交:+showSubmitted”);
控制台日志(“信息:”,“”);
如果(显示不活动)
$(“#showInactive”).prop('checked',true);
否则,如果(已提交)
$(“#showSubmitted”).prop('checked',true);
},
完成:功能(请求、状态){
如果(状态==未定义| |状态==“错误”| |状态==“解析器错误”){
警报('搜索无效或提交的记录时出错:'+状态);
window.location.href=“/application/createNewResult/”;
}否则如果(状态!=“成功”){
警报('搜索无效或提交的记录时出错:'+状态);
}
}
});
}

在ajax调用中,成功回调函数可以包含一个“result”参数,如:

success: function(result) {...

在服务器上,您将定义哪些数据应该返回到“result”参数中(网格的新数据),并使用javascript将原始数据替换为新数据。

我找到了另一种方法,从服务器获取所有数据,并在复选框上的事件上显示新数据(预期数据)。此方法比最大化ajax调用更快,而且它还保留复选框(选中)的状态。我就是这样做的:

   $("#showInactive").change(function(e,args) {

            if(this.checked) {

                         var holder=new Array();
                            var i=0;
                             var d = (data[i] = {});
                             <c:forEach var="message" items="${info}">
                                 holder[i]={
                                        id: i,
                                        remove: '<c:out value="${message.Id}"/>' ,
                                        rule: '<c:out value="${message.Name}"/>',
                                        status: '<c:out value="${message.status}"/>'
                                        }
                                  i++; 
                              </c:forEach>
                             grid.init();
                                dataView.beginUpdate();
                                dataView.setItems(holder);
                                dataView.endUpdate();
                                dataView.refresh();
                                grid.invalidate();
                                grid.updateRowCount();
                                grid.render();
                             grid.render();
                    });
$(“#showInactive”).change(函数(e,args){
如果(选中此项){
var holder=新数组();
var i=0;
变量d=(数据[i]={});
持有人[i]={
id:我,
删除:“”,
规则:“”,
状态:“”
}
i++;
grid.init();
dataView.beginUpdate();
dataView.setItems(持有者);
endUpdate();
refresh();
grid.invalidate();
grid.updateRowCount();
grid.render();
grid.render();
});

请详细说明“用新数据替换原始数据”这一部分我刚才指的是您原来的问题。您说希望在用户单击复选框时替换网格中的数据。因此,您可以捕获复选框“单击”事件并调用ajax函数。在ajax调用的“成功”部分,您可以包含包含