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 に答える