您的位置:首页 > 编程语言 > Qt开发

LINQtosqllinqtoxml\JS操作JSON

2011-10-07 20:33 543 查看
这个例子其实不能贴出完整的代码,公司的规定你懂得

此例子: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=" 保 存 " onclick="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>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息