【发布时间】:2012-06-13 10:34:46
【问题描述】:
我有一个 MVC3 ASP.NET 项目,我在其中使用 jQuery 和 KendoUI 作为视图。我已经定义了组合框,它是一个数据源,并且我从控制器获取结果,其中 JSON 字符串在数据源中的格式正确。
作为 JSON 字符串返回的数据约为 500kb,组合框未显示任何内容。它只是在右侧显示加载图标。我认为这里的大量数据确实是一个问题......
谁能帮忙?
下面是我的代码的 sn-p:
<input id="kendoCboClienti" />
<script type="text/javascript">
$(document).ready(function () {
clientiDS = new kendo.data.DataSource({
transport: {
read: {
url: "/Clienti/",
dataType: "json"
}
},
schema: {
model: {
fields: {
id: { type: "string" },
ragioneSociale: { type: "string" }
}
}
}
});
$("#kendoCboClienti").kendoComboBox({
placeholder: "Sceglie il cliente",
dataTextField: "RAGIONE_SOCIALE",
dataValueField: "ID",
dataSource: clientiDS
});
});
</script>
JSON 字符串看起来类似于:
[
{ID:429,RAGIONE_SOCIALE:"AUTOTRASP.PORETTO G."},
{ID:430,RAGIONE_SOCIALE:"P.G. JOHNNY IMPORT EXPORT"},
{ID:431,RAGIONE_SOCIALE:"CONFARTIGIANATO TREVISO"},
.....
]
在 jsFiddle 中可以工作,但它非常慢、无响应,并且浏览器有时会因数据量大而崩溃。
谢谢!
编辑 1:我已经修改了发送到数据源的数据量(只有 10 条记录),但仍然无法正常工作。可能是数据源的问题?
【问题讨论】:
-
数据量可能是个问题。您在控制台中看到任何错误吗?
-
@RoryMcCrossan 没有错误,只有状态为 200 OK 的 GET 请求
-
这很可能是由于数据的权重。您需要对请求使用某种分页方法。
-
@RoryMcCrossan 怎么样?在客户端,在控制器中还是在 Web 服务中? (是的,我正在使用将数据返回给控制器的 Web 服务)
-
服务器端 - 在 Web 服务中执行。数据太重,甚至无法在客户端进行处理。您需要一次传递数据的子集,例如。 50 条记录。然后允许用户一次请求上一个/下一个 50 个。
标签: jquery json asp.net-mvc-3 combobox kendo-ui