设置:
-
ASP MVC项目
-
通过Razor的视图中的剑道网格
-
列自定义命令,调用...
-
使用refresh()URL打开Kendo窗口的JavaScript,将部分视图作为自定义表单
-
表单有一个调用JavaScript的输入类型=按钮
障碍:
如何使用新模型(来自窗口/窗体javascript)更新Grid的行(dataItem?) . 我无法获得目标dataItem的句柄 . Select()在此处不适用,因为未选中该行 . 相反,自定义按钮事件打开模态网格窗口,其中包含用于更新,关闭等的字段和命令 .
我可以使用原生的网格编辑,但我想要完成的是一种完全自定义弹出窗口的方法,显示可用于呈现CRUD操作的局部视图 .
顺便说一句:这样做的基本原理是优化网格行中的空间,通常使用不必要的按钮进行编辑和删除,使用Kendo本机控件属性进行布局 . 在我的案例中,我觉得这更好地呈现在一个单独的细节视图中,就像模型网格窗口一样 .
同样,不使用Select(),我无法理解如何在Window / form JavaScript中获取调用它的Grid行的句柄,以便用新模型数据更新行 .
谢谢你的时间 .
3 回答
使用你的方法你正在做双重请求所以我的建议:在编辑时打开一个绑定到MVVM的行的窗口:
该窗口包含一个编辑器模板(Shared / EditorTemplates / Client.cshtml):
编辑器模板:
此演示显示如何获取绑定到按下自定义命令键的列的dataItem的引用,并在窗口中显示相应的信息 . 您也可以使用dataItem更新Grid:
http://demos.telerik.com/kendo-ui/grid/custom-command
这是一个例子:
http://dojo.telerik.com/abUHI看一下showDetails函数
我发布以来的发现......
我是Web演示开发的新手,因此掌握客户端与服务器端元素的区别和范围是关键点 . 同样,了解Kendo Grid的各种细节也很有帮助 .
继续我目前的解决方案......
获取从未使用Select()完成的自定义命令事件中选择的行项目,因为未选择行 . 正如之前在其他帖子中所述,这只是所需工作的一部分 . 在自定义命令事件处理程序JavaScript中(在下面的完整解决方案中再次看到):
MY SOLUTION:
在托管Kendo Grid的父窗口中:
在Kendo模式窗口中显示的部分视图_edit.cshtml中:
在表单就绪期间连接按钮事件,它获取仍在客户端范围内的网格控件的句柄:
我愿意在这里重构建议 . 在JavaScript中,似乎有很多客户端编码来完成针对Kendo Grid的自定义活动 . (叹气)我很高兴拥有多功能性 . (微笑)
需要进行大量的重新编辑才能获得有用的答案 . 让我知道 . ;)
参考文献:Telerik Forums / Kendo UI Forum / Grid / How does Grid update its dataSource?