

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Web.Script.Serialization;//脚本序列化的命名空间 using System.Collections; namespace UserType { /// <summary> /// UserType 的摘要说明 /// </summary> public class UserType : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; DataTable dt = DBHelper.GetDataSet("select id,typename from userType");//查询数据库返回数据表 // 1. public DataRow[] Select(); 获取所有 System.Data.DataRow 对象的数组。 // 返回结果: System.Data.DataRow 对象的数组。 // 2 . public DataRow[] Select(string filterExpression); 摘要: 按照主键顺序 // (如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。 // 参数:filterExpression:要用来筛选行的条件。返回结果:System.Data.DataRow 对象的数组。 //3 .public DataRow[] Select(string filterExpression, string sort); 获取按照指定的排序顺序且与筛选条件相匹配的 // 所有 System.Data.DataRow 对象的数组。 参数: filterExpression: 要用来筛选行的条件。 // sort: 一个字符串,它指定列和排序方向。 返回结果: // 与筛选表达式相匹配的 System.Data.DataRow 对象的数组。 //4 public DataRow[] Select(string filterExpression, string sort, DataViewRowState recordStates); // 摘要: 获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组。 // 参数:filterExpression 要用来筛选行的条件. sort: 一个字符串,它指定列和排序方向。 // recordStates: System.Data.DataViewRowState 值之一。返回结果: System.Data.DataRow 对象的数组。 DataRow[] drow = dt.Select("id>0","id desc");//选择出id>0的列,并按降序排列 //克隆 System.Data.DataTable 的结构,包括所有 System.Data.DataTable 架构和约束。 // 返回结果: 新的 System.Data.DataTable,与当前的 System.Data.DataTable 具有相同的架构。 //即拥有相同的表结构,没有数据 DataTable dtable = dt.Clone(); for (int i = 0; i < drow.Length; i++) { // 将 System.Data.DataRow 复制到 System.Data.DataTable 中,保留任何属性设置以及初始值和当前值。 // 参数:row: 要导入的 System.Data.DataRow。 dtable.ImportRow(drow[i]);//即将新的数据赋给一个新的表 } context.Response.Write(GetTableString(dtable)); } public bool IsReusable { get { return false; } } /// <summary> /// 将DataTable序列化成Json 对象,供Ajax前台使用其数据 /// </summary> /// <param name="dt">DataTable</param> /// <returns>string</returns> /// json格式数据一 [{"id":3,"typename":"你好"},{"id":2,"typename":"老师"},{"id":1,"typename":"学生"}] public static string GetTableString(DataTable dt) { JavaScriptSerializer jss = new JavaScriptSerializer(); //初始化序列化类 ArrayList arrList = new ArrayList();//创建接受表数据 foreach (DataRow row in dt.Rows) { Dictionary<string, object> dic = new Dictionary<string, object>(); //创建字典,用来存放行数据 foreach (DataColumn col in dt.Columns) { dic.Add(col.ColumnName, row[col.ColumnName]); } arrList.Add(dic); } return jss.Serialize(arrList);//将一个ArrayList对象序列化成字符串 } } }


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="UserType.login" %> <!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 src="js/jquery-1.8.0.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $.ajax({ type: "POST", url: "UserType.ashx", // data: {type: typeName },这个是向一般处理程序传参的 名字:值,名字:值 success: function (msg) { //如果成功,msg是UserType.ashx传过来的字符串 msg = $.parseJSON(msg); //将字符串格式程json对象 for (var i = 0; i < msg.length; i++) { $("#select1").append("<option value=" + msg[i]["id"] + ">" + msg[i]["typename"] + "</option>"); } } }); $("#select1").change(function () { alert($(this).val()); }); }); </script> </head> <body> <form id="form1" runat="server"> <div> <select id="select1"> </select> </div> </form> </body> </html>