c# - kendo UI 网格数据源 asp webforms

标签 c# jquery asp.net ajax kendo-ui

所以我按照 Kendo Provides 的例子要使用外部数据源,出于某种原因,当您放置 Default.aspx/GetEvents 的 URL(其中 GetEvents 是 Default.aspx 中的网络方法)时,它会返回 Default.aspx 的整个 HTML,而不是仅以正常方式调用网络方法AJAX 调用。

所以我找到了解决这个问题的方法,我使用本地数据源方法,它调用一个 javascript 函数 - 这个 javascript 函数对我在 default.aspx 中的 web 方法进行自己的 ajax 调用并获得成功响应

这是我的代码

 $(document).ready(function () {
                $("#grid").kendoGrid({
                    dataSource: {
                        data: createRandomData(),
                        schema: {
                            data: "d"
                        },
                        pageSize: 10
                    },
                    height: 250,
                    scrollable: true,
                    sortable: true,
                    filterable: true,
                    pageable: {
                        input: true,
                        numeric: false
                    },
                    columns: [
                        {
                            field: "Title",
                            title: "Title",
                            width: 100
                        },
                        {
                            field: "StartDate",
                            title: "StartDate",
                            width: 100
                        },
                        {
                            field: "Keywords",
                            width: 100
                        }
                    ]
                });
            });

这是 createRandomData() 返回的开始 - 它是有效的 json - 我只是不想全部粘贴并使这个问题不可读

"d" : [
{
    "Title": "Chicago BlackHawks vs. Detroit Redwings",
    "StartDate": "9/7/2012 12:00:00 AM",
    "Keywords": "-- Select --"
},
{
    "Title": "",
    "StartDate": "1/1/1900 12:00:00 AM",
    "Keywords": "-- Select --"
}, .......

我看不出为什么这不起作用,现在网格只是说“正在加载...”并且永远保持这样,没有控制台错误

                    function createRandomData() {
                    $.ajax({
                        type: "POST",
                        url: "MyEvents.aspx/GetEvents",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {                                
                            var rs = msg;
                            return rs;
                        }
                    });
                    return false;
                }

最佳答案

可能的问题是 KendoUI 在使用 data 元素时需要一个简单的 javascript 调用(没有 AJAX)。当您调用 JS 方法时,它会立即返回,但 AJAX 调用需要更长的时间才能完成,但 Kendo grid 在调用完成时永远不会收到通知。

您可以尝试使用数据源上的 transport.read 对象 here .这样网格应该可以很好地处理 AJAX 调用。

编辑: 你有没有试过这样的事情:

dataSource: {
    transport: {
        read: function(options) {
            $.ajax({
                type: "POST",
                url: "MyEvents.aspx/GetEvents",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {                                
                    options.success(msg.d);
                }
            });
        }
     }
}

关于c# - kendo UI 网格数据源 asp webforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308946/

相关文章:

jquery - Chrome 错误?将输入属性从 'password' 切换到 'text' 显示移动/碰撞

asp.net - 使用 Visual Studio Web 服务器运行时的身份验证对话框

.net - 使 asp.net 应用程序符合 IPv6

c# - 尝试访问 App.config 文件以进行邮件设置但无法正常工作

c# - 序列化两个同名但子节点不同的节点

javascript - 单选按钮总是返回 "yes"值

.net - 渲染 Excel 文件

c# - 如何避免格式化 Razor View 时的字符串损坏

c# - 如何在不克隆的情况下获取子数组

javascript - jQuery 处理复选框组