2

我在我的项目中使用 Flexigrid 在网格工具栏上添加一个按钮我可以使用如下代码:

...    
"buttons":[
    {"name":"Modifica","bclass":"edit","onpress":"doCommand"},
    {"name":"Elimina","bclass":"delete","onpress":"doCommand"}
],
...

无论如何,“onpress”属性应包含对 js 回调的引用,因此该字段不应包含在引号内。

我正在使用 JavaScriptSerializer 类(在 System.Web.Script.Serialization 命名空间中)进行序列化。

我如何声明变量以使 JavaScriptSerializer 像这样序列化?

...    
"buttons":[
    {"name":"Modifica","bclass":"edit","onpress":doCommand},
    {"name":"Elimina","bclass":"delete","onpress":doCommand}
],
...

感谢您的帮助!

4

4 回答 4

4

这个技巧怎么样?

var param = new Dictionary<string,string>();

param["onpress"] = "%doCommand%";

return new JavaScriptSerializer().Serialize( param ).Replace( "\"%", "" ).Replace( "%\"", "" );
于 2012-09-12T04:16:54.590 回答
0

JavaScriptSerializer 是用来序列化为 JSON 的,JSON 不能代表函数;它也不能引用先前定义的变量。所以我不相信这是可能的。

于 2010-09-09T17:44:17.123 回答
0

据我所知,使用 .NET 序列化程序没有本地方法可以执行此操作,但您可以在客户端执行以下代码以将onpressJSON 字符串转换为回调...

var buttons = []; // Your JSON array
for(var i = 0; i < buttons.length; i++) {
  var b = buttons[i];
  b.onpress = window[b.onpress];
}
于 2010-09-09T17:55:45.447 回答
0

您可以将函数名称存储为字符串

...    
"buttons":[
    {"name":"Modifica","bclass":"edit","onpress":"doCommand"},
    {"name":"Elimina","bclass":"delete","onpress":"doCommand"}
],
...
于 2010-09-09T18:01:57.000 回答