1. save.js ---------------------------------------
var Json = ""; //傳入后台的json字符串
var flag = false; //是否添加逗號標志
var grid = new Ext.grid.EditorGridPanel({
clickstoEdit : 1,
listeners : {
afteredit : function(e) {
if (flag) {
Json += ',';
}
flag = true;
Json += '{"MID":' + '"' + e.record.data.M_id
+ '","ECode":' + '"' + e.value + '"}';
}
}
});
});
// Json = "[{\"MID\":\"3\",\"ECode\":\"2900.66\"},{\"MID\":\"4\",\"ECode\":\"2348.52\"}]";
function SaveLotinfotoDB() // 點擊‘保存’按鈕,數據傳送到SavaData.aspx頁面。
{
Ext.Ajax.request({
url : '/SaveData.aspx',
params : {
json : Json
},// 這里是傳到后台的參數
success : function(r, o) {
Ext.Msg.alert('提示', '修改成功!');
},
failure : function() {
Ext.Msg.alert("提示", "保存失敗!");
}
});
}
2. SaveData.aspx.cs---------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
save();
}
/// <summary> Author:IT蒙古人
/// 將JSON字符串反序列化為NET對象
/// </summary>
public List<FreeData> isEfect(string json)
{
MemoryStream stream2 = new MemoryStream();
DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(List<FreeData>));
StreamWriter wr = new StreamWriter(stream2);
wr.Write(json);
wr.Flush();
stream2.Position = 0;
Object obj = ser2.ReadObject(stream2);
List<FreeData> list = (List<FreeData>)obj;
return list;
}
public void save()
{
string json = "[" + Request["json"] + "]";
string sql = null;
List<FreeData> ls = isEfect(json);
for (int i = 0; i < ls.Count; i++)
{
int id = ls[i].MID;
float code = ls[i].ECode); // sql+="UPDATE userInfo SET salary="+code+" WHERE ID="+id+";";
}
// return SQLEcute(sql); //執行數據庫UPDATE語句,保存(多條)數據
}
---------------------------------------------------------------
注意:那么這里的FreeData類要注意了。在FreeData類中的屬性名稱要和JSON數據的鍵名前加"_",這樣才會save()函數里的ls[i].MID、ls[i].ECode獲取到正確值(這個不是很肯定,但我剛開始寫屬性名字為別的時候獲取不到值)。
3. FreeData.cs ---------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary> Author:IT蒙古人
///FreeData 的摘要說明
/// </summary>
public class FreeData
{
private int _MID;
private float _ECode;
public FreeData()
{ }
public float ECode
{
get { return _ECode; }
set { this._ECode = value; }
}
public int MID {
get { return _MID; }
set { _MID = value; }
}
}
=========================================================================================
大功告成,ExtJs傳過來的字符串(包含多條數據的)轉換成c#對象,並獲取值。
望各位讀者點評!
作者:IT蒙古人
出處:http://hi.baidu.com/qing_bd_liang/item/537cf93751e063ca2e8ec28b