mvc模式下,easyui的datagrid的数据,传到后台接受的处理方法,

<script type="text/javascript" language="javascript">
function saveDeviceIp()
{
    //获取表单的所有数据
    var rowsData = $('#maclist').datagrid('getRows');
    //处理掉表单中不要的字段
    var jsond = [];
    var loc;
    $.each(rowsData, function (i) {
        loc= {
        "demo": rowsData[i].demo,
        "macAddress": rowsData[i].macAddress,
        "ipAddress": rowsData[i].ipAddress,
        "ipMode":rowsData[i].ipMode,
        "switcher":rowsData[i].switcher,
        "port":rowsData[i].port,
        "vlanid":rowsData[i].vlanid,
        "distime":rowsData[i].distime,
        "vailtime":rowsData[i].vailtime
        };
    jsond.push(loc);
    });

    jsond = JSON.stringify(jsond); //转换成json数据

    $.ajax({
        url:'/AjaxDeviceInfo/saveDeviceIp.cspx',
        type:'post',
        data:{ipinfo:jsond},
        dataType:'json',
        sunccess:function(data){ 
        alert(data);
        }
     })
}
</script>
//后台处理
//使用JavaScriptSerializer类来处理传递来的json数据。将其字符串型的json序列化成数组
[Action]
public object saveDeviceIp(string ipinfo)
{
    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
    List<DeviceIpInfo> questionList = new List<DeviceIpInfo>();
    string josnArray = System.Web.HttpContext.Current.Request.Params["ipinfo"];  
    questionList = (List<DeviceIpInfo>)jsonSerializer.Deserialize(josnArray, typeof(List<DeviceIpInfo>));
    return null;
} 
View Code

 

文章借鉴了http://blog.csdn.net/metal1/article/details/17401019

在使用JQuery EsayUI中有时会需要将DataGrid(数据表格)的数据保存到数据库中。下面我们来看看这是怎么做到的。

既然要保存数据,首先得获取数据,毕竟DataGrid没有Form有submit那样的函数可以直接提交给服务器。

首先,我们先在浏览器上得到数据,DataGrid有两种方法可供选择:

getData none 返回加载完毕后的数据。

getRows none 返回当前页的所有行。

通过getRows获得的数据就是DataGrid中所有行的数据

而通过getData方法得到的数据不但包括所有行数据,还包括total属性。

值得注意的是这两种方法得到的数据都是object型的。

  var rowsData = $('#tbQuestion').datagrid('getRows');  

这里我们采用一种构造json数据的方法来处理得到的object数据。

  var json =JSON.stringify(rowsData);  

有时候我们只需要其中的某几列数据而非全部数据。这时候就需要使用遍历了

//构造json数据传送到服务器

var jsond = [];
var loc;
$.each(rowsData, function (i) {
loc= {
"demo": rowsData[i].demo,
"macAddress": rowsData[i].macAddress,
"ipAddress": rowsData[i].ipAddress,
"ipMode":rowsData[i].ipMode,
"switcher":rowsData[i].switcher,
"port":rowsData[i].port,
"vlanid":rowsData[i].vlanid,
"distime":rowsData[i].distime,
"vailtime":rowsData[i].vailtime
};
jsond.push(loc);
});

jsond = JSON.stringify(jsond); //转换成json数据

经过这种方法处理后的数据是标准的json数据,属于字符串类型,可以直接通过post或者get传递给服务器。

$.ajax({
url:'/AjaxDeviceInfo/saveDeviceIp.cspx',
type:'post',
data:{ipinfo:jsond},
dataType:'json',
sunccess:function(data){
alert(data);
}
})

后台:

string josnArray = System.Web.HttpContext.Current.Request.Params["ipinfo"];  

在服务器端,这里使用JavaScriptSerializer类来处理传递来的json数据。将其字符串型的json序列化成数组。当然,这里还需要有个容器,用来装入得到的数组。

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
List<DeviceIpInfo> questionList = new List<DeviceIpInfo>();
string josnArray = System.Web.HttpContext.Current.Request.Params["ipinfo"];
questionList = (List<DeviceIpInfo>)jsonSerializer.Deserialize(josnArray, typeof(List<DeviceIpInfo>));

 

 
posted @ 2014-05-07 17:33  xswby  阅读(1121)  评论(0)    收藏  举报