2013-03-22 90 views
3

我有一个KendoUI DropDownList的一个应用程序,会填充数据库表的列表并初步设定了列atrribute空数组的一个网格:KendoUI网格创建新列编程

... 列:[] ...

的意图是从列表中选择一个表,送表名到服务器,并从“选择包含有列名的服务器返回JSON数据,并将数据* FROM表“查询。数据回来预期并在第一时间通过如下我可以用它在那里“自我”仅仅是一个在我看来/模型网格参考:

self.columns.removeAll(); 

for (var i = 0; i < joOutput["Cols"].length; i++) { 
    var col = { title: joOutput["Cols"][i], field: joOutput["Cols"][i] }; 

    self.columns.push(col); 
    } 

提取我的数据,并将其分配给后网格数据源,网格正确显示正确的列标题和数据。但是,当我从列表中选择另一个表并从服务器接收数据时,网格显示不会更新,尽管看起来网格列已经通过执行上述代码进行了更新。在屏幕上结束的结果是列标题是第一个网格中的列的名称和第二个查询返回的行中的空行数。

这种动态操作栏目似乎很难做到,如论坛帖子http://www.kendoui.com/forums/ui/grid/dynamically-add-new-column.aspx所示,但该帖子已经过了一年多了,我希望现在可以取得一些进展,尤其是考虑到3月20日最新发布的网络直播。所以我想这个问题仍然存在:即使我有可能还是我是SOL?谢谢。

回答

9

初始化后无法动态更改网格的列。但是,您可以创建一个新的网格实例。不要忘记调用旧网格的destroy方法。

+0

我是新来的KendoUI,但类似以下内容? var grd = $ j(“#grdResults”)。data(“kendoGrid”); grd.destroy(); grd = $(“#grdResults”)。kendoGrid({columns:myColumns }); – user2030159 2013-03-22 17:00:18

+2

是的。您还可以添加$(“#grdResults”)。empty()来清除旧的HTML。 – 2013-03-22 18:44:47

+0

谢谢。那就是诀窍。 – user2030159 2013-03-25 14:25:44