我在项目中使用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}
],
...
感谢您的帮助!
答案 0 :(得分:4)
这招怎么样?
var param = new Dictionary<string,string>();
param["onpress"] = "%doCommand%";
return new JavaScriptSerializer().Serialize( param ).Replace( "\"%", "" ).Replace( "%\"", "" );
答案 1 :(得分:0)
JavaScriptSerializer用于序列化为JSON,JSON不能表示函数;它也不能引用先前定义的变量。所以我不相信这是可能的。
答案 2 :(得分:0)
据我所知,使用.NET序列化程序没有本地方法可以执行此操作,但是您可以在客户端执行以下代码以将onpress
JSON字符串转换为回调...
var buttons = []; // Your JSON array
for(var i = 0; i < buttons.length; i++) {
var b = buttons[i];
b.onpress = window[b.onpress];
}
答案 3 :(得分:0)
您可以将函数名称存储为字符串
...
"buttons":[
{"name":"Modifica","bclass":"edit","onpress":"doCommand"},
{"name":"Elimina","bclass":"delete","onpress":"doCommand"}
],
...