请注意:在持续并恢复网格状态之前,所有内容都按预期完美运行。所以请不要在那里搜索错误......
使用ASP MVC助手渲染网格:
.ToolBar(toolbar => toolbar.Create().Text("Add new role"))
使用标准语句持久保存网格客户端时:
grid = $("#grid").data("kendoGrid");
data = kendo.stringify(grid.getOptions());
数据部分无效,尤其是工具栏部分:(数据变量中的JSON文本的一部分)
..."toolbar":{"command":[{"name":null,"buttonType":"ImageAndText","text":"Add new role"}]}...
请注意“name”属性的null值。值应为“创建”。 因此,恢复数据将破坏工具栏。
我花了很多时间在公共javascript版本中重现这一点,但是 使用纯Html / Javascript版本无法重现此问题,因为它使用默认工具栏定义,如下所示:
...,
toolbar: ["create"],
...
它将在数据中序列化为:
"toolbar":["create"]
这与我们在ASP MVC案例中看到的方式不同,而且是正确的。 此外,如果我们在Html / javascript中明确设置命令的名称,如:
...,
toolbar: [{name: "create", text: "Add new Customer"}],
...
它将被序列化为:
"toolbar":[{"name":"create","text":"Add new Customer",
这是正确的,与我们在ASP MVC版本中看到的不同。
明显的解决方法是在ASP MVC中明确设置命令名称,但不幸的是ASP MVC帮助程序不公开此属性...
知道要修补什么或如何解决方法?
答案 0 :(得分:1)
AFAIK HtmlAttributes使它成为可能,
但当你使用grid.getOptions
时,json结果不会像你期望的那样。因为getOptions
将返回网格定义而不是网格呈现的方式。
试试这个
.ToolBar(toolbar => toolbar.Create()
.Text("Add new role")
.HtmlAttributes(new {name = "create" }))
JSON字符串将是这样的
..."toolbar":{"command":[{"name":null, "attr" : "\"name\" = \"create\"", "buttonType":"ImageAndText","text":"Add new role"}]}...
您可以使用字符串replace
对其进行一些修改,使其符合您的预期