DHTMLX - 分页后,单击网格重定向到第1页

时间:2015-03-24 22:09:49

标签: javascript pagination grid dhtmlx

我正在使用DHTMLX Pro并使用这些配置渲染表。分页工作正常。在我点击Grid中的任何行或任何单元格后进行分页后,它会自动重定向到第1页。

例如: 当我在第2页时,当我点击第2页中的网格行时,它会返回到第1页。

grid.js

var per_page = 50;
var $spinner_el = $("#spinnerDiv");   
feedgrid = new dhtmlXGridObject('grid-region');
feedgrid.setImagePath('../../../../static/styles/vendor/dhtmlx/imgs/');
feedgrid.setSkin("dhx_web");
feedgrid.setHeader(["ID","Name","date"]);                 
feedgrid.setColumnIds("id,name,createdDate");
feedgrid.setColTypes("txt,txt,txt");
feedgrid.enableAutoHeight(true);
feedgrid.enableAutoWidth(true);
feedgrid.setEditable(false);
feedgrid.enablePaging(true, per_page, per_page, "pagingArea", true, "infoArea");
feedgrid.setPagingSkin("toolbar", "dhx_web");
feedgrid.init();
feedgrid.load("/getdata", "js");

feedgrid.entBox.onselectstart = function () {
   return true;
};

feedgrid.attachEvent("onXLS", function () {
   spinUtil.on($spinner_el);
});

feedgrid.attachEvent("onXLE", function () {
  spinUtil.off($spinner_el);
  resizeGrid();
});

feedgrid.attachEvent("onRowInserted", function (rId) {
  feedgrid.adjustColumnSize(0);
  feedgrid.adjustColumnSize(1);
  feedgrid.adjustColumnSize(2);
});

feedgrid.attachEvent("onResizeEnd", function (cInd, cWidth, obj) {
  resizeGrid();
});

feedgrid.attachEvent("onPageChanged", function (ind, fInd, lInd) {
  resizeGrid();
});

HTML

    <div id='grid-region'></div>
    <div class="loading-image" id="table-ajax-loader"></div>
    <div class="paginate-head">
        <div id="pagingArea"></div>
        &nbsp;
        <div id="infoArea"></div>
    </div>

不确定是什么问题。

2 个答案:

答案 0 :(得分:0)

我必须覆盖onBeforeSelect DHTMLX事件才能禁用重定向到第1页,

ingestionGrid.attachEvent("onBeforeSelect", function(new_row,old_row,new_col_index){
    //alert(new_row);
});

答案 1 :(得分:0)

我知道这个帖子已经过时但我对DHTMLXGrid的分页也有同样的问题。我认为这是图书馆的一个错误,但今天早上我发现了这个问题。

当然,如果你的数据xml节点中有一些属性,比如 id 或类似的东西,那些属性的值必须在你从网格中做出的每个异步请求中进行排序和顺序即可。在其他情况下,网格变得疯狂(和开发人员一样)。如果您无法订购,请从节点中删除任何属性。

例如:

想象一下,我将这个xml从服务器端返回到网格:

<?xml version="1.0" encoding="ISO-8859-15"?>
<rows pos="0" total_count="40">
   <row id="1">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   <row id="2">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   ...
   <row id="n">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
</rows>

如果在下一个异步请求(pagin)中重复id atributte的相同编号(从1到n),当你在网格中选择一行时,网格将返回到第一页('onRowSelect '事件将触发'onBeforePageChanged'事件)。

好方法是在服务器端保留一个存储页面第一个位置的参数,然后使用该值构建xml。您可以使用以下方法从javascript访问此数据:

position_start = (grid.currentPage - 1) * grid.rowsBufferOutSize;

然后在构建响应xml时为'id'属性增加每次迭代的值。

请注意上一个示例中属性 id 的值(对于每个请求中15个结果的块):

第一个异步请求:

<?xml version="1.0" encoding="ISO-8859-15"?>
<rows pos="0" total_count="40">
   <row id="1">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   <row id="2">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   ...
   <row id="15">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
</rows>

在下一个异步请求中:

<?xml version="1.0" encoding="ISO-8859-15"?>
<rows pos="0" total_count="40">
   <row id="16">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   <row id="17">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
   ...
   <row id="30">
       <cell>...</cell>
       <cell>...</cell>
        ...
       <cell>...</cell>
   </row>
</rows>

在分页结束后。

希望这可以提前避免任何头痛。

祝你好运