0

dojoとウィジェットの作成に慣れ始めたばかりで、データを入力したいWebUIがあります。私の質問は、これを行う方法についていくつかの参考資料やアイデアを入手することです。私のデータベースはすべてSQLServer2008であり、通常はmicrosoft.netを使用しています。おそらく、SQLクエリを呼び出して結果をjsonに変換し、それがデータグリッドであろうとチャートであろうとウィジェットにフィードするサービスを作成する必要があると思いました。これを行う方法と、それが実際に可能かどうかはわかりません。どんなアイデアでもありがたいです。

編集:

       store = new dojo.data.ItemFileWriteStore({
            url: "hof-batting.json"
        });

        ngrid = new dojox.grid.DataGrid({
            store: store,
            id: 'ngrid',
            structure: [
                { name: "Search Term", field: "searchterm", width: "10%" },
                { name: "Import Date", field: "importDate", width: "10%" }
            ]
        }, "grid");


        ngrid.startup();

Webサービスから返されたデータをこのデータグリッドに追加し、同じ原則を使用してグラフにデータを追加したいと思います。

4

1 に答える 1

1

あなたはあなたがする必要があることを正確に説明します。

C#を使用してデータベースにクエリを実行し、データを取得してからjsonに変換します。現在、jsonのシリアル化には複数の手法を使用しています。JSON.NETの使用をお勧めします。これは、.NETMVCチームが使用するものです。現在.NETの一部であるDataContractSerializationは使用しません。

http://json.codeplex.com/

JSONをページに配置すると、JavaScriptがページ変数としてJSONにアクセスすることがあります。また、.NETでサービスを呼び出すこともあります。WCFを使用し、.ashxファイルを使用してWebクライアントにjsonデータを提供しました。

jsonの構造は、dojoウィジェットとWebサーバー間のコントラクトになります。チャートウィジェットまたはストアがコントラクトを定義するプロセスを開始するために必要なものを使用します。

編集

WCFインターフェース

[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/data/{service}/", 
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
String RetrieveData(string service, Stream streamdata);

実装はjsonである文字列を返します。これはjsonとしてブラウザーに送信されますが、xmlノードによって.NETによってラップされます。私はそれをきれいにするユーティリティ関数を持っています。

MyUtil._xmlPrefix = 
    '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">';
MyUtil._xmlPostfix = '</string>';

MyUtil.CleanJsonResponse = function(data) {
    // summary: 
    //    a method that cleans a .NET response and converts it 
    //    to a javascript object with the JSON. 
    //    The .NET framework, doesn't easily allow for custom serialization,
    //    so the results are shipped as a string and we need to remove the 
    //    crap that Microsoft adds to the response.
    var d = data;
    if (d.startsWith(MyUtil._xmlPrefix)) {
        d = d.substring(MyUtil._xmlPrefix.length);
    }
    if (d.endsWith(MyUtil._xmlPostfix)) {
        d = d.substring(0, d.length - MyUtil._xmlPostfix.length);
    }

    return dojo.fromJson(d);
};

// utility methods I have added to string
String.prototype.startsWith = function(str) { 
  return this.slice(0, str.length) == str;
};
String.prototype.endsWith = function(str) { 
  return this.slice(-str.length) == str;
};
于 2012-05-15T12:44:05.470 に答える