使用本地存储来缓存Kendo数据源数据

时间:2015-01-13 08:52:56

标签: jquery ajax asp.net-mvc kendo-ui kendo-asp.net-mvc

我有一个页面有许多相同的Kendo DropDownLists(MVC风格)。我想在页面加载时缓存用于填充ajax中下拉列表的数据集,然后根据需要将下拉列表绑定到此本地数据对象。

目前我正在执行以下操作以在页面加载时创建LocalStorage对象:

 $.ajax({
        url: "/Job/GetEmployees",
        type: "get",
        datatype: 'json',
        success: function (data) {
            var dataSource = new kendo.data.DataSource({
                offlineStorage: "employeesStorage",
                data: data
                });
            dataSource.read();
            return false;
        },
        error: function (msg) {
          //  tostr.error("Error: " + msg.statusText);
        }
    });

这成功创建了一个名为employeesStorage的本地存储对象,其中包含正确的数据。

尽管有大量的Google搜索,但我无法看到如何利用这些数据来填充我的EditorTemplates - 我最接近的是:

@Modeltype models.employeesVM
@(Html.Kendo().DropDownList _
    .Name("Salesman") _
        .DataValueField("employee_id") _
        .DataTextField("LastName") _
        .DataSource(Function(s) s.Read(Function(read) read.Action("GetEmployees", "Job"))) _
        .OptionLabel("Select Employee")
)

...显然,当我想从本地数据中填充DDL时,它会从控制器中填充DDL。 如何重新配置​​DDL以访问本地存储?

1 个答案:

答案 0 :(得分:1)

好的 - 来自Telerik支持的一些帮助,我得到了答案。

DropDownList不支持能够从本地存储填充自己,所以它只是编写必要的JS以在渲染时填充它的情况:

   @Modeltype models.employeesVM
   @(Html.Kendo().DropDownList _
    .Name("Salesman") _
        .DataValueField("employee_id") _
        .DataTextField("Employee") _
    .OptionLabel("Select Employee"))

<script>
    var locate = JSON.parse(localStorage.getItem("employeesStorage"));
    $("#Salesman").data("kendoDropDownList").setDataSource(locate);
</script>

Simples!