【问题标题】:kendo UI grid datasource asp webforms剑道 UI 网格数据源 asp webforms
【发布时间】:2012-09-06 21:53:17
【问题描述】:

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

所以我找到了一种解决方法,我使用了本地数据源方法,它调用了一个 javascript 函数 - 这个 javascript 函数在 default.aspx 中对我的 webmethod 进行了自己的 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;
                }

【问题讨论】:

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


    【解决方案1】:

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

    您可以尝试在数据源here 上使用transport.read 对象。这样,网格应该可以正常使用 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);
                    }
                });
            }
         }
    }
    

    【讨论】:

    • 我就是这样,问题是当我使用 url: ".." 并连接到 webmethod 时它没有调用我的 webmethod - 它返回整个 aspx 页面,就像剑道网格不知道如何进行 ajax 调用 - 它所做的一切都是请求 aspx 页面 - 很奇怪,以前从未见过这样的事情
    • 我可以,但我很肯定它会退回我提供的样品
    • 已发布代码,看看我是如何在另一个函数中进行 ajax 调用的?因为把它放在 url 中是行不通的
    • 看看使用我的例子中的代码是否可行。这基本上与您之前的 JS 函数完全一样,但在 success 处理程序中,您让 Kendo 知道数据已准备好。请注意,我也删除了您的 schema 定义,因为我已经在 success 处理程序中返回了 d 部分。
    • 对不起,我没有早点回来,这仍然不起作用,网格显示其中没有数据,在萤火虫中我看到了对 GetEvents 的请求和成功的响应 - 我不知道是什么进行中
    【解决方案2】:

    也许改变你的架构定义:

    从这里

    schema: {
     data: "d"
    }
    

    到这里

    schema: {
     model: {
      fields: {
        Title: { type: "string" },
        StartDate: { type: "string" },
        Keywords: { type: "string" }
       }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多