这个例子其实不能贴出完整的代码,公司的规定你懂得
此例子:1、是从服务器取出对象然后通过NET的webMethods中JSON把对象序列化和反序列化,然后由LINQ操作对数据进行过滤保存到数据库(方便);
2、用LINQTOXML把系统的配置XML文件读取,确定要显示哪些控件;
3、JS控制 2者先比,如果相同就把数据绑定到对应的控件上;
4、JS中有个方法很常用,把JSON序列化成JSON字符串,与反序列化成JSON对象
5、次例子完成了设置默认,删除、增加、查询、更新功能;
6、它是配合AJAXPro使用的
注意:
很多时候最好不用JS,把持代码与内库的干净,保证代码的可测试性,可维护性。
不可测试的代码永远是最威胁的,同时会带来很大的维护成本;
<?xml version="1.0" encoding="utf-8" ?>
<Node id="DTS001" name="问题单所有控件" >
<contorls id="col001" name="问题单提交" node="dts001">
<contorl id="textSubmit" dec ="提交人" length="4000"></contorl>
<contorl id="textfaxiangren" dec ="发现人" length="200"></contorl>
<contorl id="textSex" dec ="ddd人" length="4000"></contorl>
<contorl id="textability" dec ="xxx人" length="200"></contorl>
</contorls>
<contorls id="col002" name="问题单修改" node="dts002">
<contorl id="001" dec ="修改人" length="4000"></contorl>
</contorls>
</Node>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq.Mapping;
using System.Web;
using System.Data.Linq;
using System.Data;
using System.Collections;
using System.ServiceModel.Web;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Text;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace WebApplication1.Model
{
[Table(Name="Model")]
[DataContract]
public class ModelEntity
{
private Guid modeId;
[Column(IsPrimaryKey=true)]
[DataMember]
public Guid ModeId
{
get { return modeId; }
set { modeId = value; }
}
private string modeName;
[DataMember]
[Column(Name = "modeName")]
public string ModeName
{
get { return modeName; }
set { modeName = value; }
}
private string modeNode;
[DataMember]
[Column(Name="modeNode")]
public string ModeNode
{
get { return modeNode; }
set { modeNode = value; }
}
private string conorlId;
[DataMember]
[Column(Name = "conorlId")]
public string ConorlId
{
get { return conorlId; }
set { conorlId = value; }
}
private bool isDefault;
[DataMember]
[Column(Name = "IsDefault")]
public bool IsDefault
{
get { return isDefault; }
set { isDefault = value; }
}
private string value;
[Column(Name = "Value")]
[DataMember]
public string Value
{
get { return this.value; }
set { this.value = value; }
}
private string name;
[Column(Name = "Value")]
[DataMember]
public string Name
{
get { return name; }
set { name = value; }
}
}
/// <summary>
/// 强类型
/// </summary>
public partial class NorthwindDataContext:DataContext
{
public Table<ModelEntity> Models;
public NorthwindDataContext(IDbConnection connection):base(connection){}
public NorthwindDataContext(string connection):base(connection){}
}
public class ModelDal
{
public static List<ModelEntity> GetAllModel()
{
NorthwindDataContext ctx = new NorthwindDataContext(@"Data Source=LENOVO-PC\SQLEXPRESS;Initial Catalog=NEW_SI_WEI_DB;Integrated Security=True");
IEnumerable<ModelEntity> modeList = ctx.ExecuteQuery<ModelEntity>("select * from Model where name='wangwei'");
return modeList.ToList();
}
}
[DataContract]
public class SystemModel
{
private string cid;
public SystemModel() { }
[DataMember]
public string Cid
{
get { return cid; }
set { cid = value; }
}
private string desc;
[DataMember]
public string Desc
{
get { return desc; }
set { desc = value; }
}
private string length;
[DataMember]
public string Length
{
get { return length; }
set { length = value; }
}
}
public class ModeXml
{
public static string GetModeXml()
{
XElement xement = XElement.Load( System.Web.HttpContext.Current.Server.MapPath( @"/NodeConfig/DTSNodeConfig.xml"));
var queryXml = from xmllinq in xement.Elements("contorls")
select xmllinq;
var col = from co in queryXml
where co.Attribute("id").Value == "col001"
select co;
IEnumerable<SystemModel> ienumber = from t in col.Elements()
select new SystemModel
{
Cid = t.Attribute("id").Value,
Desc = t.Attribute("dec").Value
,
Length = t.Attribute("length").Value
};
string result = Serializator.EntityToJson(ienumber.ToList<SystemModel>());
return result;
}
}
public static class Serializator
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string EntityToJson<T>(T obj) where T :new()
{
var ds = new DataContractJsonSerializer(typeof(T));
using(var ms = new MemoryStream())
{
ds.WriteObject(ms,obj);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="josn"></param>
/// <returns></returns>
public static T JsonToEntiy<T>(string josn)
{
var dts = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(josn));
var obj =(T)dts.ReadObject(ms);
ms.Close();
return obj;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.Serialization.Json;
using WebApplication1.Model;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
public string _tempJOSN;
public string _sysTempJson;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm1));
_sysTempJson= ModeXml.GetModeXml();
_tempJOSN = Serializator.EntityToJson(ModelDal.GetAllModel());
}
}
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string SaveData(string json)
{
if (string.IsNullOrEmpty(json) || json.Length < 6)
{
return "不成功";
}
List<ModelEntity> me = Serializator.JsonToEntiy<List<ModelEntity>>(json);
if (me != null)
{
return "成功";
}
return "不成功";
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language=javascript src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function tempObj(contrlId, isDefault,modeId,title,modeName,name,value,colValue)
{
this.contrlId = contrlId;
this.isDefault = isDefault;
this.modeId = modeId;
this.title = title;
this.modeName = modeName;
this._name = name;
this._value = value;
this.colValue = colValue;
}
var sysTempJson = <%=_sysTempJson %>;
var userTmeJosn =<%=_tempJOSN %>;
//{"ConorlId":" texSubit","IsDefault":false,"ModeId":"f028bfb4-af22-4734-af5d-10b0ee2bfd63"
//,"ModeName":"无线产品线模版","ModeNode":"DTSOO1","Name":"无线模版1","Value":"无线模版1"}
function saveData()
{
var jsonArray = new Array();
var cols = document.getElementsByTagName("textarea");
var mNames = document.getElementById("mNmae");
for(var i=0;i< cols.length;i++)
{
debugger
var colValue = cols[i].value;
var c= cols[i];
if(colValue!=null && colValue!="undefined" && colValue!="")
{
var mName = "div_"+c.id;
var divs = document.getElementById(mName);
var tempObj = new(c.id,divs.title,divs.innerHTML,mNames,colValue);
jsonArray.push(tempObj);
}
}
var josnStr = Obj2str(jsonArray);
var c = WebApplication1.WebForm1.SaveData(josnStr );
}
$(document).ready(function(){
for(var j=0; j<sysTempJson.length;j++)
{
var sys = sysTempJson[j];
var newDIv= document.createElement("div");
var nameTmepDIV= document.createElement("div");
nameTmepDIV.style.Fload= "left";
nameTmepDIV.innerHTML = sysTempJson[j].Desc;
var texd= document.createElement("textarea");
for(var i=0;i< userTmeJosn.length;i++)
{
texd.setAttribute("id",userTmeJosn[i].ConorlId);
texd.setAttribute("title",userTmeJosn[i].ModeName);
nameTmepDIV.setAttribute("id", "div_"+userTmeJosn[i].ConorlId);
nameTmepDIV.setAttribute("title", userTmeJosn[i].ModeId);
if(sys.Cid==userTmeJosn[i].ConorlId && userTmeJosn[i].ConorlId !="undefined")
{
texd.setAttribute("value",userTmeJosn[i].ConorlId);
}
}
newDIv.appendChild(texd);
newDIv.appendChild(nameTmepDIV);
document.getElementById("sysTmep").appendChild(newDIv);
}
});
//这个方法重要,里面要注意 例如:我有个字段值为“ ”,而在后台刚好这个字段是GUID,NET的JSON反序列化的时候会报错的,你可以自己根据需要进行修改
function Obj2str(o) {
if (o == undefined) {
return "";
}
var r = [];
if (typeof o == "string") return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
if (typeof o == "object") {
if (!o.sort) {
for (var i in o)
r.push("\"" + i + "\":" +Obj2str(o[i]));
if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
r.push("toString:" + o.toString.toString());
}
r = "{" + r.join() + "}"
} else {
for (var i = 0; i < o.length; i++)
r.push(Obj2str(o[i]))
r = "[" + r.join() + "]";
}
return r;
}
return o.toString().replace(/\"\:/g, '":""');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style=" margin:0 auto; width:700px;">
<div style=" line-height:30px; margin:0px; vertical-align:middle"><span style="padding:0px 0px 20px 0px;"> 模板名称:</span> <input type="text" id=="mNmae" /> <input type="button" value=" 保 存 " οnclick="saveData()" /></div>
<div id="userTmep" style=" float:left">
123123
</div>
<div id="sysTmep" style=" float:left; border:1ps sloid #ededed">
<div>
</div>
</div>
</div>
</form>
</body>
</html>