Grid jQuery版本的剑道UI错误

Grid jQuery版本的剑道UI错误,grid,window,filtering,kendo-ui,Grid,Window,Filtering,Kendo Ui,我在同一个页面上有一个剑道UI网格和一个剑道UI窗口。该窗口包含用于插入记录的表单元素,记录由网格中的一行表示。但由于我不知道的原因,当我打开窗口并再次关闭然后重新打开时,剑道UI将其缩小了100倍。我不想破坏窗户,所以我一直在寻找替代方案 我使用了jquery1.7.2。我已将jQuery更新为1.8.0版。窗户的打开、关闭和重新打开工作正常。我非常高兴,直到我意识到现在网格过滤器不工作。当我点击网格过滤器时,什么都没有发生,没有弹出窗口,什么都没有。原因是什么?解决办法是什么 编辑: 这是我

我在同一个页面上有一个剑道UI网格和一个剑道UI窗口。该窗口包含用于插入记录的表单元素,记录由网格中的一行表示。但由于我不知道的原因,当我打开窗口并再次关闭然后重新打开时,剑道UI将其缩小了100倍。我不想破坏窗户,所以我一直在寻找替代方案

我使用了jquery1.7.2。我已将jQuery更新为1.8.0版。窗户的打开、关闭和重新打开工作正常。我非常高兴,直到我意识到现在网格过滤器不工作。当我点击网格过滤器时,什么都没有发生,没有弹出窗口,什么都没有。原因是什么?解决办法是什么

编辑:

这是我的代码(我已经替换了URL的值)。网格过滤器与jQuery 1.7.2配合使用。窗口重新打开与jQuery的新版本一起使用。此外,如果我删除排序黑客,网格过滤器弹出窗口仍然不会显示

    var hshflt = {};
    var addWindow;
    var editWindow;
    var init = false;
    //Sort Hack

    /*
    Changes all dataSources to case insensitive sorting (client side sorting).
    This snipped enable case insensitive sorting on Kendo UI grid, too.

    The original case sensitive comparer is a private and can't be accessed without modifying the original source code.
    tested with Kendo UI version 2012.2.710 (Q2 2012 / July 2012).
    */

    var CaseInsensitiveComparer = {

        getterCache: {},

        getter: function (expression) {
            return this.getterCache[expression] = this.getterCache[expression] || new Function("d", "return " + kendo.expr(expression));
        },

        selector: function (field) {
            return jQuery.isFunction(field) ? field : this.getter(field);
        },

        asc: function (field) {
            var selector = this.selector(field);
            return function (a, b) {

                if ((selector(a).toLowerCase) && (selector(b).toLowerCase)) {
                    a = selector(a).toLowerCase(); // the magical part
                    b = selector(b).toLowerCase();
                }

                return a > b ? 1 : (a < b ? -1 : 0);
            };
        },

        desc: function (field) {
            var selector = this.selector(field);
            return function (a, b) {

                if ((selector(a).toLowerCase) && (selector(b).toLowerCase)) {
                    a = selector(a).toLowerCase(); // the magical part
                    b = selector(b).toLowerCase();
                }

                return a < b ? 1 : (a > b ? -1 : 0);
            };
        },

        create: function (descriptor) {
            return this[descriptor.dir.toLowerCase()](descriptor.field);
        },


        combine: function (comparers) {
            return function (a, b) {
                var result = comparers[0](a, b),
        idx,
        length;

                for (idx = 1, length = comparers.length; idx < length; idx++) {
                    result = result || comparers[idx](a, b);
                }

                return result;
            };
        }
    };

    kendo.data.Query.prototype.normalizeSort = function (field, dir) {
        if (field) {
            var descriptor = typeof field === "string" ? { field: field, dir: dir} : field,
    descriptors = jQuery.isArray(descriptor) ? descriptor : (descriptor !== undefined ? [descriptor] : []);

            return jQuery.grep(descriptors, function (d) { return !!d.dir; });
        }
    };

    kendo.data.Query.prototype.sort = function (field, dir, comparer) {

        var idx,
length,
descriptors = this.normalizeSort(field, dir),
comparers = [];

        comparer = comparer || CaseInsensitiveComparer;

        if (descriptors.length) {
            for (idx = 0, length = descriptors.length; idx < length; idx++) {
                comparers.push(comparer.create(descriptors[idx]));
            }

            return this.orderBy({ compare: comparer.combine(comparers) });
        }

        return this;
    };

    kendo.data.Query.prototype.orderBy = function (selector) {

        var result = this.data.slice(0),
comparer = jQuery.isFunction(selector) || !selector ? CaseInsensitiveComparer.asc(selector) : selector.compare;

        return new kendo.data.Query(result.sort(comparer));
    };

    kendo.data.Query.prototype.orderByDescending = function (selector) {

        return new kendo.data.Query(this.data.slice(0).sort(CaseInsensitiveComparer.desc(selector)));
    };
    //Sort Hack

    $("#refresh-btn").click(function () {
        refreshGrid();
    });

    var grid;

    function getPageIndex() {
        if (!(grid)) {
            return 0;
        }
        return grid.pager.page() - 1;
    }

    function getPageSize() {
        if (!(grid)) {
            return 10;
        }
        return grid.pager.pageSize();
    }

    function getFilters() {
        if (!(grid)) {
            return "";
        }
        return grid.dataSource.filter();
    }

    function getSorts() {
        if (!(grid)) {
            return "";
        }
        var arr = grid.dataSource.sort();
        if ((arr) && (arr.length == 0)) {
            return "";
        }
        var returnValue = "";
        for (var index in arr) {
            var type = "";
            for (var col in grid.columns) {
                if (grid.columns[col].field === arr[index].field) {
                    type = grid.columns[col].type;
                }
            }
            returnValue += ((returnValue.length > 0) ? (";") : ("")) + arr[index].field + "," + (arr[index].dir === "asc") + "," + type;
        }
        return returnValue;
    }

    function getColumns() {
        if (!(grid)) {
            return "";
        }
        var columns = "";
        for (var col in grid.columns) {
            if (columns.length > 0) {
                columns += ";";
            }
            columns += grid.columns[col].field + "," + grid.columns[col].type;
        }
        return columns;
    }

    var initGrid = true;
    var grid2Data;

    function getDataSource() {
        $.ajax({
            type: 'POST',
            url: 'mydsurl' + getParams(),
            data: "filter=" + JSON.stringify(getFilters()) + "&columns=" + getColumns(),
            success: function (param) { grid2Data = param; },
            //dataType: dataType,
            async: false
        });
        return grid2Data.Data;
    }

    var shouldClickOnRefresh = false;
    function refreshGrid() {
        shouldClickOnRefresh = false;
        $.ajax({
            type: 'POST',
            url: 'mydsurl' + getParams(),
            data: "filter=" + JSON.stringify(getFilters()) + "&columns=" + getColumns(),
            success: function (param) { grid2Data = param; },
            //dataType: dataType,
            async: false
        });
        grid.dataSource.total = function () {
            return grid2Data.Total;
        }
        for (var col in grid.columns) {
            if ((grid.columns[col].type) && (grid.columns[col].type === "Date")) {
                for (var row in grid2Data.Data) {
                    grid2Data.Data[row][grid.columns[col].field] = new Date(parseInt((grid2Data.Data[row][grid.columns[col].field] + "").replace("/Date(", "").replace(")/", "")));
                }
            }
        }
        grid.dataSource.data(grid2Data.Data);
        shouldClickOnRefresh = true;
    }

    function getParams() {
        return getPageSize() + "|" + getPageIndex() + "|" + getSorts();
    }

    function bindGrid() {
        var editUrl = 'myediturl';
        if (!(editWindow)) {
            editWindow = $("#edit-window");
        }
        $(".k-button.k-button-icontext.k-grid-edit").each(function (index) {
            $(this).click(function () {
                if (!editWindow.data("kendoWindow")) {
                    editWindow.kendoWindow({
                        title: "Edit User",
                        width: "60%",
                        height: "60%",
                        close: onClose,
                        open: onEditOpen,
                        content: editUrl + $("#grid").data().kendoGrid.dataSource.view()[index]["ID"]
                    });
                }
                else {

                    editWindow.data("kendoWindow").refresh(editUrl + $("#grid").data().kendoGrid.dataSource.view()[index]["ID"]);
                    editWindow.data("kendoWindow").open();
                }
                editWindow.data("kendoWindow").center();
                return false;
            })
        });
        $(".k-button.k-button-icontext.k-grid-delete").each(function (index) {
            $(this).click(function () {

                var r = confirm("Are you sure you want to delete this user?");
                if (r == true) {
                    $.ajax({
                        type: 'POST',
                        url: 'mydelurl' + $("#grid").data().kendoGrid.dataSource.view()[index]["ID"],
                        success: function (param) { refreshGrid(); },
                        async: false
                    });
                }
                return false;
            });
        });
    }

    function onDataBound() {
        if (!(shouldClickOnRefresh)) {
            shouldClickOnRefresh = true;
            bindGrid();
        }
        else {
            refreshGrid();
        }
    }

    $(function () {
        $("#grid").kendoGrid({
            dataBound: onDataBound,
            dataSource: {
                autoSync: true,
                data: getDataSource(),
                serverPaging: true,
                schema: {
                    model: {
                        fields: {
                            Email: { type: "string" },
                            FullName: { type: "string" },
                            LogCreateDate: { type: "date" },
                            RoleName: { type: "string" },
                            UserName: { type: "string" }
                        }
                    },
                    total: function (response) {
                        return grid2Data.Total;
                    }
                },
                pageSize: 10
            },
            toolbar: ["create"],
            scrollable: true,
            sortable: true,
            filterable: true,
            pageable: {
                input: true,
                numeric: false,
                pageSizes: true
            },
            columns: [
                    {
                        command: ["edit", "destroy"],
                        title: "&nbsp;"
                    },
                    {
                        field: "Email",
                        title: "Email",
                        type: "String"
                    },
                    {
                        field: "FullName",
                        title: "Full Name",
                        type: "String"
                    },
                    {
                        field: "LogCreateDate",
                        title: "Created",
                        type: "Date",
                        template: '#= kendo.toString(LogCreateDate,"MM/dd/yyyy") #'
                    },
                    {
                        field: "RoleName",
                        title: "Role",
                        type: "Custom"
                    },
                    {
                        field: "UserName",
                        type: "String"
                    }
                ],
            editable: "popup"
        });
        grid = $("#grid").data("kendoGrid");

        function onAddOpen() {
        }



        addWindow = $("#add-window");
        $(".k-button.k-button-icontext.k-grid-add").click(function () {
            if (!addWindow.data("kendoWindow")) {
                addWindow.kendoWindow({
                    title: "Add User",
                    width: "60%",
                    height: "60%",
                    close: onClose,
                    open: onAddOpen,
                    content: 'myaddurl'
                });
            }
            else {
                addWindow.data("kendoWindow").open();
            }
            addWindow.data("kendoWindow").center();
            addWindow.data("kendoWindow").refresh();
            return false;
        });

    });

    function onClose() {
        $("#refresh-btn").click();
    }

    function onEditOpen() {
        //editWindow.data("kendoWdinow").center();
    }
var hshflt={};
var窗口;
var编辑窗口;
var init=false;
//分类黑客
/*
将所有数据源更改为不区分大小写的排序(客户端排序)。
这也可以在剑道UI网格上实现不区分大小写的排序。
原始区分大小写的比较器是私有的,在不修改原始源代码的情况下无法访问。
使用剑道用户界面版本2012.2.710(2012年第二季度/2012年7月)进行测试。
*/
var案例不敏感比较={
getterCache:{},
getter:函数(表达式){
返回this.getterCache[expression]=this.getterCache[expression]| |新函数(“d”,“return”+kendo.expr(expression));
},
选择器:功能(字段){
返回jQuery.isFunction(字段)?字段:this.getter(字段);
},
asc:功能(字段){
var选择器=此选择器(字段);
返回函数(a,b){
if((选择器(a.toLowerCase)和&(选择器(b.toLowerCase)){
a=选择器(a).toLowerCase();//神奇的部分
b=选择器(b).toLowerCase();
}
返回a>b1:(ab1:0);
};
},
创建:函数(描述符){
返回此[descriptor.dir.toLowerCase()](descriptor.field);
},
联合收割机:功能(比较器){
返回函数(a,b){
var结果=比较器[0](a,b),
idx,
长度;
for(idx=1,length=comparers.length;idx0)?(“;”):(“”)+arr[index]。字段+”,“+(arr[index]。dir==”asc“+”,“+类型;
}
返回值;
}
函数getColumns(){
如果(!(网格)){
返回“”;
}
var列=”;
for(网格列中的变量列){
如果(columns.length>0){
列+=“;”;
}
columns+=grid.columns[col]。字段“+”,“+grid.columns[col]。类型;
$(".k-grid-filter").each(function(index) {
    $(this).click(function() {
        $($(".k-filter-menu.k-popup.k-group.k-reset")[index]).offset({
            left: $($(".k-grid-filter")[index]).offset().left - $($(".k-filter-menu.k-popup.k-group.k-reset")[index]).width(), 
            top: $($(".k-grid-filter")[index]).offset().top + $($(".k-grid-filter")[index]).height()})
        })
    });