Slickgrid Loader和Datagrid问题

时间:2014-01-28 22:20:04

标签: slickgrid

在加载数据时,无法获得光滑的网格以显示ajax加载微调器。代码如下,任何帮助表示赞赏。这段代码可能会缺少一些问题,但你明白这个想法。我试图将ajax微调器放入页面中以便加载数据但是我有一些其他控件是冲突的,所以不确定我是否正确实现了这个....

var loadingIndicator = null;

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

                                     grid.onViewportChanged.subscribe(function (e, args) {
                                         var vp = grid.getViewport();
                                         loader.ensureData(vp.top, vp.bottom);
                                       });

                                    function comparer(a, b) {
                                        var x = a[sortcol],
                                            y = b[sortcol];
                                        return (x == y ? 0 : (x > y ? 1 : -1));
                                    }
                                    grid.onSort.subscribe(function (e, args) {
                                        sortdir = args.sortAsc ? 1 : -1;
                                        sortcol = args.sortCol.field;
                                        dataView.sort(comparer, args.sortAsc);
                                    });


                                     loader.onDataLoading.subscribe(function () {
                                         if (!loadingIndicator) {
                                          loadingIndicator = $("<span class='loading-indicator'><label>Buffering...</label></span>").appendTo(document.body);
                                           var $g = $("#_data");

                                           loadingIndicator
                                               .css("position", "absolute")
                                               .css("top", $g.position().top + $g.height() / 2 - loadingIndicator.height() / 2)
                                               .css("left", $g.position().left + $g.width() / 2 - loadingIndicator.width() / 2);
                                         }

                                         loadingIndicator.show();
                                       });

                                       loader.onDataLoaded.subscribe(function (e, args) {
                                         for (var i = args.from; i <= args.to; i++) {
                                           grid.invalidateRow(i);
                                         }

                                        grid.updateRowCount();
                                        grid.render();

                                         loadingIndicator.fadeOut();
                                       });



                                      //  loadingIndicator.fadeOut();


                                    dataView.beginUpdate();
                                    $("#_data").show();
                                    dataView.onRowCountChanged.subscribe(function (e, args) {
                                        grid.updateRowCount();
                                        grid.render();
                                    });

                                    dataView.onRowsChanged.subscribe(function (e, args) {
                                        grid.invalidateRows(args.rows);
                                        grid.render();
                                    });

                                    dataView.onPagingInfoChanged.subscribe(function (e, pagingInfo) {
                                        var isLastPage = pagingInfo.pageNum == pagingInfo.totalPages - 1;
                                        var enableAddRow = isLastPage || pagingInfo.pageSize == 0;
                                        var options = grid.getOptions();

                                        if (options.enableAddRow != enableAddRow) {
                                            grid.setOptions({
                                                enableAddRow: enableAddRow
                                            });
                                        }
                                    });
                                    dataView.beginUpdate();
                                    dataView.setItems(data);
                                    dataView.endUpdate();

                                 // load the first page
                                    grid.onViewportChanged.notify();

                                })
                            }
                        })
                            .fail(function (t) {
                                alert("didn't work.");
                            });
                    }

2 个答案:

答案 0 :(得分:1)

据我所知,这个装载的东西不是这样的。我尝试通过初始化&#34; loadingIndicator&#34;来解决这个问题。在&#34; loadTable&#34;部分。

var loadingIndicator = $("<span class='loading-indicator'><label>Loading...</label></span>").appendTo(document.body);
loadingIndicator.css("position", "absolute");

然后在endUpdate()之后更新了网格后我使用了

loadingIndicator.css("display", "none");

这有助于我在网格加载表格中的数据时获得加载指示符。 这可能不是最好的方式,但确实对我有用,你可能想尝试一次。根据您的项目要求进行即兴发挥。 其余的css部分保持不变。

答案 1 :(得分:0)

你忘了写px .. 试试这个代码..

.css("top", $g.position().top + $g.height() / 2 - loadingIndicator.height() / 2 + "px")
.css("left", $g.position().left + $g.width() / 2 - loadingIndicator.width() / 2 + "px");