看過Ext - EditGridPanel實(shí)現(xiàn)效果的朋友會很驚訝,一個(gè)Grid就能實(shí)現(xiàn)所有增刪改查功能。在展示給客戶看時(shí),讓你的表現(xiàn)得很風(fēng)騷。而他們又怎么知道,我們在調(diào)試js時(shí),是多么痛苦。 如何在js中調(diào)用后臺業(yè)務(wù)邏輯類,在我前面的文章中已經(jīng)講述過,而本篇的重點(diǎn)在于
看過Ext - EditGridPanel實(shí)現(xiàn)效果的朋友會很驚訝,一個(gè)Grid就能實(shí)現(xiàn)所有增刪改查功能。在展示給客戶看時(shí),讓你的表現(xiàn)得很風(fēng)騷。而他們又怎么知道,我們在調(diào)試js時(shí),是多么痛苦。如何在js中調(diào)用后臺業(yè)務(wù)邏輯類,在我前面的文章中已經(jīng)講述過,而本篇的重點(diǎn)在于js對象與后臺對象之間的轉(zhuǎn)換。
1. Json Object轉(zhuǎn)Model —— js定義json對象傳遞到后臺業(yè)務(wù)類,后臺接收后,轉(zhuǎn)為數(shù)據(jù)模型。
Json Object = { 'KId':1, 'IndexDirectory':‘c:\root’}
轉(zhuǎn)換方法:
KdgPointData kpd = (KdgPointData)JsonConvert.Import(typeof(KdgPointData), jsonObject.ToString());
KdgPointData就是數(shù)據(jù)模型類,使用JsonConvert對象需要引用兩個(gè)動(dòng)態(tài)鏈接庫(地址見文章附錄),并添加: using Jayrock.Json.Conversion;
Import()方法重載了5次,這里用到的是,第一個(gè)參數(shù)為你想轉(zhuǎn)換的類型,第二個(gè)參數(shù)為json object轉(zhuǎn)為string后的結(jié)果。
注意:在后臺接收js對象,都用object來接收,也就是說,上面的jsonObject在c#方法類中,是一個(gè)object對象,轉(zhuǎn)換后,才是model。而且jsonObject中元素的個(gè)數(shù),key的大小寫都要跟Model中的屬性保持一直。
2. Model轉(zhuǎn)Json Object —— 這個(gè)不需要轉(zhuǎn)變,直接將Model或者M(jìn)odel[]作為方法的返回類型,在js那邊接收后,定義對應(yīng)的JsonReader,就可以了。
如果你在定義Ext.data.store使用了proxy屬性,并定義了相應(yīng)的url,那么Jayrock倒有一個(gè)將Model轉(zhuǎn)為符合json格式字符串的方法:
string temp = JsonConvert.ExportToString(model);
然后,Response.Write(temp); Response.End(); 如此請求這個(gè)url后,從而獲得Json數(shù)據(jù)。
3. DataTable轉(zhuǎn)Json Object —— 這個(gè)有兩種做法,一種是將DataTable轉(zhuǎn)為Model或Model[],再通過第二種方式轉(zhuǎn)換,或者自己寫一個(gè)方法拼接json 字符串:
///
///數(shù)據(jù)庫查詢結(jié)果
///需要添加進(jìn)來的字段名
///
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
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com