jQuery&JSON~~

js:
$(function () {
    $.ajax({
        type: 'GET',
        url: 'GetJson.ashx',
        dataType: 'json',
        success: function (data) {
            //$.each(data.menus, function (idx, item) {
            //    alert(idx);
            //    alert(item.street);
            //});
            var menulist = "";
            //alert(data);
            $.each(data.menus, function (i, n) {
                menulist += '<div title="' + n.menuname + '"  icon="' + n.icon + '" style="overflow:auto;">';
                menulist += '<ul>';
                $.each(n.menus, function (j, o) {
                    menulist += '<li><div><a target="mainFrame" href="' + o.url + '" ><span class="icon ' + o.icon + '" ></span>' + o.menuname + '</a></div></li> ';
                })
                menulist += '</ul></div>';
            })

            $(".easyui-accordion").append(menulist);
            $('.easyui-accordion li a').click(function (){
                var tabTitle = $(this).text();
                var url = $(this).attr("href");
                addTab(tabTitle, url);
                $('.easyui-accordion li div').removeClass("selected");
                $(this).parent().addClass("selected");
            }).hover(function () {
                $(this).parent().addClass("hover");
            }, function () {
                $(this).parent().removeClass("hover");
            });

            $(".easyui-accordion").accordion();
        },
        error: function (msg) {
            alert(msg.responseText); 
        }
    });
})

.ashx:
<%@ WebHandler Language="C#" Class="VSSCodeHandler" %>

using System;
using System.Web;
using YJC.Toolkit.Sys;
using YJC.Toolkit.Data;
using YJC.Toolkit.Utility;
using System.Data;

public class VSSCodeHandler : IHttpHandler{
   
    DbContext context = GlobalVariable.DefaultDbContextConfig.CreateDbContext();

    public void ProcessRequest (HttpContext context) {
       
        context.Response.ClearContent();

        string sql = @"SELECT  FN_ID,FN_PARENT_ID,FN_TREE_LAYER,FN_NAME,FN_URL,'iconCls' as iconCls, FN_REVERSE1 FROM SYS_FUNCTION";

        DataSet ds = new DataSet("Tooklit");
        SqlSelector seletor = new SqlSelector(this.context, ds);
        seletor.Select("SYS_FUNCTION", sql);

        DataTable vTable = ds.Tables["SYS_FUNCTION"];

        string strResult = "{\"menus\":["+"\r\n";
        if (vTable.Rows.Count > 0)
        {
            DataRow[] dr = vTable.Select("fn_parent_id='-1'");
            strResult = DtTreeToJson(vTable, strResult, dr);
        }

        strResult += "\r\n";
        strResult += "]}";

        context.Response.ContentType = "text/plain";
        context.Response.AddHeader("Content-Type", "application/json; charset=gb2312");
        context.Response.Write(strResult.ToString());
    }
   
    private static string DtTreeToJson(DataTable dt, string strResult, DataRow[] dr)
    {
        if (dr.Length > 0)
        {
            for (int i = 0; i < dr.Length; i++)
            {
                strResult += "{\"menuid\":\"" + dr[i]["fn_id"] + "\",";
                strResult += "\"icon\":\"icon-sys\",";
                strResult += "\"menuname\":\"" + dr[i]["FN_NAME"] + "\"," + "\r\n";
                DataRow[] drChild = dt.Select("fn_parent_id='" + dr[i]["fn_id"] + "'");
                if (drChild.Length > 0)
                {
                    strResult += "\"menus\":[";
       
                    for (int j = 0; j < drChild.Length; j++)
                    {
                        strResult += "{\"menuname\":\"" + drChild[j]["FN_NAME"] + "\",";
                        strResult += "\"icon\":\"icon-nav\",";
                        strResult += "\"url\":\"" + drChild[j]["fn_url"] + "\"}";
                        strResult += "\r\n";

                        if (j != drChild.Length - 1)
                            strResult += ",";
                    }
                   
                    strResult += "]"+"\r\n";
                }

                strResult += "}" + "\r\n";

                if (i != dr.Length - 1)
                    strResult += ",";
            }
        }
        return strResult;
    }
   
    public bool IsReusable {
        get {
            return false;
        }
    }
}

呵呵,博客园现在还不支持搜狐博客直接搬家功能,只好把之前的搜狐博客日志一个一个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,    //自动完成激活之前填入的最小字符
                width: 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,    //自动完成激活之前填入的最小字符
                width: 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 + ')')

posted @ 2011-03-27 22:54  AriLee  Views(2060)  Comments(7Edit  收藏  举报