我刚刚开始熟悉dojo并创建小部件,并且有一个Web UI,我现在想要填充数据。我的问题仅仅是获得一些关于如何做到这一点的参考或想法。我的数据库都是sql server 2008,我通常使用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服务返回的数据添加到此数据网格,并使用相同的原理将数据添加到图表中。
答案 0 :(得分:1)
您准确描述了您需要做的事情。
我们使用C#查询数据库以获取数据,然后将其转换为json。我们现在使用多种技术进行json序列化。我建议使用JSON.NET。这是.NET MVC团队将要使用的内容。我不会使用当前属于.NET的DataContractSerialization。
我们有时会在页面上放置JSON,javascript会将其作为页面变量访问。其他时候我们称之为.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发送到浏览器,但它由.NET由xml节点包装。我有一个实用功能,可以清除它。
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;
};