LINQtosqllinqtoxml\JS操作JSON

这个例子其实不能贴出完整的代码,公司的规定你懂得

此例子: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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值