zoukankan      html  css  js  c++  java
  • jQuery&JSON~~

    呵呵,博客园现在还不支持搜狐博客直接搬家功能,只好把之前的搜狐博客日志一个一个Copy过来,和大家一起分享了,这篇是我10年的一个测试实例:

    方法1:

    using System.IO;
    using System.Data.SqlClient;
    using System.Data.Common;
    using Microsoft.Practices.EnterpriseLibrary.Common;
    using Microsoft.Practices.EnterpriseLibrary.Data;
     
    using System.Text;
    using System.Reflection;

    后台代码:

    protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {
          string sql = @"SELECT top 10 [Materialcode]
                              ,[MaterialName]
                              ,[MaterialSpec]
                              ,[HelpCode]
                           FROM [aritime].[dbo].[Material_Info_t]";

          DbCommand dbcmd = null;
          dbcmd = DB.GetSqlStringCommand(sql);
          DataSet dataset = null;
          dataset = DB.ExecuteDataSet(dbcmd);
          DataTable dt = dataset.Tables[0];
          Materialcode_List = CreateJsonParameters(dt).ToString().Trim();
          //Response.Write(Materialcode_List.ToString());
           OnStart();
         }
       }

        public static string CreateJsonParameters(DataTable dt)
        {
            StringBuilder JsonString = new StringBuilder();
            JsonString.Clear();

            //Exception Handling       
            if (dt != null && dt.Rows.Count > 0)
            {
                ////JsonString.Append("{ ");
                //JsonString.Append(" var MaterialNameLists = [");

                JsonString.Append("[");

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    JsonString.Append("{ ");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        if (j < dt.Columns.Count - 1)
                        {
                            JsonString.Append("" + dt.Columns[j].ColumnName.ToString().Trim() + ":" + "\"" + dt.Rows[i][j].ToString().Trim() + "\",");
                        }
                        else if (j == dt.Columns.Count - 1)
                        {
                            JsonString.Append("" + dt.Columns[j].ColumnName.ToString().Trim() + ":" + "\"" + dt.Rows[i][j].ToString().Trim() + "\"");
                        }
                    }
                    /**/
                    /**/
                    /**/
                    /*end Of String*/
                    if (i == dt.Rows.Count - 1)
                    {
                        JsonString.Append("} ");
                    }
                    else
                    {
                        JsonString.Append("}, ");
                    }
                }
                JsonString.Append("]");
     
                return JsonString.ToString().Trim();
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// 将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。
        /// </summary>
        /// <param name="source">需要转换的表。</param>
        /// <returns></returns>
        public static string DataTableToJson(DataTable source)
        {
            if (source.Rows.Count == 0)
                return "";
            StringBuilder sb = new StringBuilder("[");
            foreach (DataRow row in source.Rows)
            {
                sb.Append("[");
                for (int i = 0; i < source.Columns.Count; i++)
                {
                    sb.Append('"' + row[i].ToString() + "\",");
                }
                sb.Remove(sb.Length - 1, 1);
                sb.Append("],");
            }
            sb.Remove(sb.Length - 1, 1);
            sb.Append("]");
            return sb.ToString();
        }

    //    public void Atest()
    //    {
    //        string path = Server.MapPath("http://www.cnblogs.com/js/localdata.js");
    //        if (File.Exists(path))
    //        {
    //            File.Delete(path);
    //        }

    //        string sql = @"SELECT [Materialcode]
    //                          ,[MaterialName]
    //                          ,[MaterialSpec]
    //                          ,[HelpCode]
    //                       FROM [aritime].[dbo].[Material_Info_t]";

    //        DbCommand dbcmd = null;
    //        dbcmd = DB.GetSqlStringCommand(sql);
    //        DataSet dataset = null;
    //        dataset = DB.ExecuteDataSet(dbcmd);
    //        //创建JS文件.  
    //        StreamWriter sr = File.CreateText(path);
    //        sr.WriteLine("//初始化所有国内机场城市");
    //        sr.WriteLine(" var MaterialNameLists = [" + "\r\n");
    //        //   这里是JS中的内容  
    //        for (int i = 0; i < dataset.Tables[0].Rows.Count - 1; i++)
    //        {
    //            sr.WriteLine("{ Materialcode: \"" + dataset.Tables[0].Rows[i]["Materialcode"].ToString().Trim() + "\",MaterialName: \"" + dataset.Tables[0].Rows[i]["MaterialName"].ToString().Trim() + "\",MaterialSpec: \"" + dataset.Tables[0].Rows[i]["MaterialSpec"].ToString().Trim() + "\",HelpCode:\"" + dataset.Tables[0].Rows[i]["HelpCode"].ToString().Trim() + "\"}," + "\r\n");
    //        }

    //        sr.WriteLine("{ Materialcode: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["Materialcode"].ToString().Trim() + "\",MaterialName: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["MaterialName"].ToString().Trim() + "\",MaterialSpec: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["MaterialSpec"].ToString().Trim() + "\",HelpCode:\"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["HelpCode"].ToString().Trim() + "\"}" + "\r\n");

    //        sr.WriteLine("];" + "\r\n");

    //        sr.WriteLine("var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];");

    //        sr.WriteLine("var cities = ['Aberdeen', 'Ada','Akron','Yorkshire', 'Yorkville'];");
    //        sr.Close();
    //    }


    前台代码:

    <input type="text" id="suggest13" />

        <script type="text/javascript" src="http://www.cnblogs.com/js/jquery.js"></script>
        <%--    <script type="text/javascript" src="http://www.cnblogs.com/js/json.js"></script>--%>
        <script type='text/javascript' src='http://www.cnblogs.com/js/jquery.autocomplete.js'></script>
        <%--    <script type='text/javascript' src='http://www.cnblogs.com/js/localdata.js'></script>--%>
        <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/js/jquery.autocomplete.css" />

        <script type="text/javascript">
            $().ready(function () {

                function log(event, data, formatted) {
                    $("<li>").html(!data ? "No match!" : "Selected: " + formatted).appendTo("#result");
                }

                function formatItem(row) {
                    return row[0] + " (<strong>id: " + row[1] + "</strong>)";
                }
                function formatResult(row) {
                    return row[0].replace(/(<.+?>)/gi, '');
                }

                var MaterialNameLists = '<%=Materialcode_List%>';

                ////method 1:eval来转换JSON字符到Object//////
                var arr = eval('(' + MaterialNameLists + ')')
                alert(arr);

                ////method 2:parseJSON来转换JSON字符到Object//////
                //            var obj = MaterialNameLists.parseJSON();
                //            alert(obj.toJSONString()); 

                //            var testlist = [{ Materialcode: "WXCL200400001", MaterialName: "螺栓松动剂", MaterialSpec: "", HelpCode: "LSSDJ" }, { Materialcode: "WXCL200400002", MaterialName: "煤油", MaterialSpec: "", HelpCode: "MY" }, { Materialcode: "WXCL200400003", MaterialName: "铁刷", MaterialSpec: "", HelpCode: "TS" }, { Materialcode: "WXCL200400004", MaterialName: "螺丝", MaterialSpec: "M16*100", HelpCode: "LS" }, { Materialcode: "WXCL200400005", MaterialName: "螺丝", MaterialSpec: "M8*50", HelpCode: "LS" }, { Materialcode: "WXCL200400006", MaterialName: "一字螺丝刀", MaterialSpec: "小", HelpCode: "YZLSD" }, { Materialcode: "WXCL200400007", MaterialName: "十字螺丝刀", MaterialSpec: "小", HelpCode: "SZLSD" }, { Materialcode: "WXCL200400008", MaterialName: "电工皮带", MaterialSpec: "", HelpCode: "DGPD" }, { Materialcode: "WXCL200400009", MaterialName: "工具套", MaterialSpec: "", HelpCode: "GJT" }, { Materialcode: "WXCL200400010", MaterialName: "电工刀", MaterialSpec: "", HelpCode: "DGD"}];

                //            var aad = [{ Materialcode: "WXCL200400001", MaterialName: "螺栓松动剂", MaterialSpec: "", HelpCode: "LSSDJ" }, { Materialcode: "WXCL200400002", MaterialName: "煤油", MaterialSpec: "", HelpCode: "MY" }, { Materialcode: "WXCL200400003", MaterialName: "铁刷", MaterialSpec: "", HelpCode: "TS" }, { Materialcode: "WXCL200400004", MaterialName: "螺丝", MaterialSpec: "M16*100", HelpCode: "LS" }, { Materialcode: "WXCL200400005", MaterialName: "螺丝", MaterialSpec: "M8*50", HelpCode: "LS" }, { Materialcode: "WXCL200400006", MaterialName: "一字螺丝刀", MaterialSpec: "小", HelpCode: "YZLSD" }, { Materialcode: "WXCL200400007", MaterialName: "十字螺丝刀", MaterialSpec: "小", HelpCode: "SZLSD" }, { Materialcode: "WXCL200400008", MaterialName: "电工皮带", MaterialSpec: "", HelpCode: "DGPD" }, { Materialcode: "WXCL200400009", MaterialName: "工具套", MaterialSpec: "", HelpCode: "GJT" }, { Materialcode: "WXCL200400010", MaterialName: "电工刀", MaterialSpec: "", HelpCode: "DGD"}];

                //              alert(aad.toString());

                //            alert(arr);

                $("#suggest13").autocomplete(arr, {
                    max: 15,    //列表里的条目数
                    minChars: 0,    //自动完成激活之前填入的最小字符
                    400,     //提示的宽度,溢出隐藏
                    scrollHeight: 400,   //提示的高度,溢出显示滚动条
                    matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
                    autoFill: false,    //自动填充

                    formatItem: function (row, i, max) {
                        return i + "/" + max + ": \"" + row.HelpCode + "\" [" + row.Materialcode + "][" + row.MaterialName + "][" + row.MaterialSpec + "]";
                    },
                    formatMatch: function (row, i, max) {
                        return row.HelpCode + " " + row.Materialcode + " " + row.MaterialName + " " + row.MaterialSpec;
                    },
                    formatResult: function (row) {
                        return row.MaterialName;
                    }
                }).result(function (event, row, formatted) {
                    //                var txt = '<%=memo_Input.ClientID%>';
                    //                document.getElementById(txt).value = row.MaterialName;
                    //                document.getElementById('<%=memo_Input.ClientID%>').value = row.MaterialName;
                });
            });
    </script>

                    

              

              

              

              

    方法2:

    后台代码:
        public void Atest()
        {
            string path = Server.MapPath("http://www.cnblogs.com/js/localdata.js");
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            string sql = @"SELECT [Materialcode]
                              ,[MaterialName]
                              ,[MaterialSpec]
                              ,[HelpCode]
                           FROM [aritime].[dbo].[Material_Info_t]";

            DbCommand dbcmd = null;
            dbcmd = DB.GetSqlStringCommand(sql);
            DataSet dataset = null;
            dataset = DB.ExecuteDataSet(dbcmd);
            //创建JS文件.  
            StreamWriter sr = File.CreateText(path);
            sr.WriteLine("//初始化所有国内机场城市");
            sr.WriteLine(" var MaterialNameLists = [" + "\r\n");
            //   这里是JS中的内容  
            for (int i = 0; i < dataset.Tables[0].Rows.Count - 1; i++)
            {
                sr.WriteLine("{ Materialcode: \"" + dataset.Tables[0].Rows[i]["Materialcode"].ToString().Trim() + "\",MaterialName: \"" + dataset.Tables[0].Rows[i]["MaterialName"].ToString().Trim() + "\",MaterialSpec: \"" + dataset.Tables[0].Rows[i]["MaterialSpec"].ToString().Trim() + "\",HelpCode:\"" + dataset.Tables[0].Rows[i]["HelpCode"].ToString().Trim() + "\"}," + "\r\n");
            }

            sr.WriteLine("{ Materialcode: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["Materialcode"].ToString().Trim() + "\",MaterialName: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["MaterialName"].ToString().Trim() + "\",MaterialSpec: \"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["MaterialSpec"].ToString().Trim() + "\",HelpCode:\"" + dataset.Tables[0].Rows[dataset.Tables[0].Rows.Count - 1]["HelpCode"].ToString().Trim() + "\"}" + "\r\n");

            sr.WriteLine("];" + "\r\n");

            sr.WriteLine("var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];");

            sr.WriteLine("var cities = ['Aberdeen', 'Ada','Akron','Yorkshire', 'Yorkville'];");
            sr.Close();
        }

      前台代码:
        <script type="text/javascript" src="http://www.cnblogs.com/js/jquery.js"></script>
        <script type='text/javascript' src='http://www.cnblogs.com/js/jquery.autocomplete.js'></script>
        <script type='text/javascript' src='http://www.cnblogs.com/js/localdata.js'></script>
        <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/js/jquery.autocomplete.css" />

        <script type="text/javascript">
            $().ready(function () {

                function log(event, data, formatted) {
                    $("<li>").html(!data ? "No match!" : "Selected: " + formatted).appendTo("#result");
                }

                function formatItem(row) {
                    return row[0] + " (<strong>id: " + row[1] + "</strong>)";
                }
                function formatResult(row) {
                    return row[0].replace(/(<.+?>)/gi, '');
                }
     
                $("#suggest13").autocomplete(MaterialNameLists, {
                    max: 15,    //列表里的条目数
                    minChars: 0,    //自动完成激活之前填入的最小字符
                    400,     //提示的宽度,溢出隐藏
                    scrollHeight: 400,   //提示的高度,溢出显示滚动条
                    matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
                    autoFill: false,    //自动填充

                    formatItem: function (row, i, max) {
                        return i + "/" + max + ": \"" + row.HelpCode + "\" [" + row.Materialcode + "][" + row.MaterialName + "][" + row.MaterialSpec + "]";
                    },
                    formatMatch: function (row, i, max) {
                        return row.HelpCode + " " + row.Materialcode + " " + row.MaterialName + " " + row.MaterialSpec;
                    },
                    formatResult: function (row) {
                        return row.MaterialName;
                    }
                }).result(function (event, row, formatted) {
                    var txt = '<%=inplace_Input.ClientID%>';
                    document.getElementById(txt).value = row.MaterialName;
                    document.getElementById('<%=inplace_Input.ClientID%>').value = row.MaterialName;
                });
            });

    </script>

    如何给文本框赋值:

       var txt = '<%=inplace_Input.ClientID%>';
       alert(txt.toString());
       document.getElementById(txt).value = row.MaterialName;
       document.getElementById('<%=inplace_Input.ClientID%>').value = row.MaterialName;

    将json字符串转换为json 对象:

       var MaterialNameLists = '<%=Materialcode_List%>';

       ////method 1:eval来转换JSON字符到Object//////
       var arr = eval('(' + MaterialNameLists + ')')

  • 相关阅读:
    Python解释器安装
    有钱就放余额宝的人,这个习惯恐怕要改一改!
    这么详细的存储基础知识,你不看看? 会后悔的!
    超全!华为交换机端口vlan详解~
    华为:鸿蒙绝不是安卓换皮!!!
    VS Code 真的会一统江湖吗?
    用户与安全 -(1)Linux用户及组管理
    运维必看!这个技能薪水28.8万,工资竟然还只是零花钱....
    原来 Linux 日志文件系统是这样工作的~
    干货长文:Linux 文件系统与持久性内存介绍
  • 原文地址:https://www.cnblogs.com/Elgin/p/1997438.html
Copyright © 2011-2022 走看看