看過Ext - EditGridPanel實現效果的朋友會很驚訝,一個Grid就能實現所有增刪改查功能。在展示給客戶看時,讓你的表現得很風騷。而他們又怎么知道,我們在調試js時,是多么痛苦。 如何在js中調用后臺業務邏輯類,在我前面的文章中已經講述過,而本篇的重點在于
看過Ext - EditGridPanel實現效果的朋友會很驚訝,一個Grid就能實現所有增刪改查功能。在展示給客戶看時,讓你的表現得很風騷。而他們又怎么知道,我們在調試js時,是多么痛苦。如何在js中調用后臺業務邏輯類,在我前面的文章中已經講述過,而本篇的重點在于js對象與后臺對象之間的轉換。
1. Json Object轉Model —— js定義json對象傳遞到后臺業務類,后臺接收后,轉為數據模型。
Json Object = { 'KId':1, 'IndexDirectory':‘c:\root’}
轉換方法:
KdgPointData kpd = (KdgPointData)JsonConvert.Import(typeof(KdgPointData), jsonObject.ToString());
KdgPointData就是數據模型類,使用JsonConvert對象需要引用兩個動態鏈接庫(地址見文章附錄),并添加: using Jayrock.Json.Conversion;
Import()方法重載了5次,這里用到的是,第一個參數為你想轉換的類型,第二個參數為json object轉為string后的結果。
注意:在后臺接收js對象,都用object來接收,也就是說,上面的jsonObject在c#方法類中,是一個object對象,轉換后,才是model。而且jsonObject中元素的個數,key的大小寫都要跟Model中的屬性保持一直。
2. Model轉Json Object —— 這個不需要轉變,直接將Model或者Model[]作為方法的返回類型,在js那邊接收后,定義對應的JsonReader,就可以了。
如果你在定義Ext.data.store使用了proxy屬性,并定義了相應的url,那么Jayrock倒有一個將Model轉為符合json格式字符串的方法:
string temp = JsonConvert.ExportToString(model);
然后,Response.Write(temp); Response.End(); 如此請求這個url后,從而獲得Json數據。
3. DataTable轉Json Object —— 這個有兩種做法,一種是將DataTable轉為Model或Model[],再通過第二種方式轉換,或者自己寫一個方法拼接json 字符串:
///
///數據庫查詢結果
///需要添加進來的字段名
///
publicstring DataTableToJson(DataTable tableSource, string[] fields)
{
string jsonData ="{'totalCount':"+ tableSource.Rows.Count +",'root':[";
if (tableSource.Rows.Count >0)
{
foreach (DataRow row in tableSource.Rows)
{
jsonData +="{";
for (int i =0; i < fields.Length; i++)
jsonData +="'"+ fields[i] +"':'"+ row[fields[i]] +"',";
jsonData = jsonData.Substring(0, jsonData.Length -1);
jsonData +="},";
}
jsonData = jsonData.Substring(0, jsonData.Length -1);
jsonData +="]}";
}
else
{
jsonData +="]}";
}
return jsonData;
}
封裝后格式為{
totalCount : 6,
root : [
{'id' : 1, 'name' : 'lislie' }, { 'id' : 2, 'name' : 'Mark' }...
]
}
使用方法:string temp = DataTableToJson(dt, {"id", "name"});
http://hi.baidu.com/38608338/blog/item/a746f9dcab53653c5982dde2.html
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com