<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
int pageSize = 20;
int start = 0;
if (!string.IsNullOrEmpty(context.Request["limit"]))
{
pageSize = int.Parse(context.Request["limit"]);
start =int.Parse(context.Request["start"]);
}
int CurrterPage = start/ pageSize+1;
// context.Response.Write(start);
context.Response.Write(grid("hca_art", "hca_art_id,hca_art_title,hca_art_author,hca_art_ComputerName,hca_art_date", "hca_art_id", "", "", 1, 0, pageSize, CurrterPage));
}
StringBuilder sb = new StringBuilder();
/// <summary>
/// sql server数据转json EXTJS grid 表格
/// </summary>
/// <param name="tablename">表名</param>
/// <param name="FieldList">显示列名,如果是全部字段则为* </param>
/// <param name="PK">单一主键或唯一值键</param>
/// <param name="where">查询条件 不含'where'字符,如id>10 and len(userid)>9 </param>
/// <param name="Order">排序 不含'order by'字符,如id asc,userid desc,必须指定asc或desc</param>
/// <param name="SortType">排序规则 1:正序asc 2:倒序desc 3:多列排序方法</param>
/// --注意当@SortType=3时生效,记住一定要在最后加上主键
/// <param name="RecorderCount">记录总数 0:会返回总记录</param>
/// <param name="PageSize">每页输出的记录数</param>
/// <param name="PageIndex">当前页数= start/ limit+1</param>
/// @TotalCount --记返回总记录
/// @TotalPageCount --返回总页数
/// <returns></returns>
public string grid(string tablename, string FieldList, string PK, string where, string Order, int SortType, int RecorderCount, int PageSize, int PageIndex)
{
string connstr = ConfigurationManager.ConnectionStrings["SQLString"].ConnectionString;
SqlConnection connection = new SqlConnection(connstr);
connection.Open();
SqlCommand cmd = new SqlCommand("sp_Page", connection); //sp_Page为储存过程名
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@TableName", tablename);
cmd.Parameters.Add("@FieldList", FieldList);
cmd.Parameters.Add("@PrimaryKey", PK);
cmd.Parameters.Add("@Where", where);
cmd.Parameters.Add("@Order", Order);
cmd.Parameters.Add("@SortType", SortType);
cmd.Parameters.Add("@RecorderCount", RecorderCount);
cmd.Parameters.Add("@PageSize", PageSize);
cmd.Parameters.Add("@PageIndex", PageIndex);
SqlParameter TotalCount = cmd.Parameters.Add("@TotalCount", 1);
SqlParameter TotalPageCount = cmd.Parameters.Add("@TotalPageCount", 1);
TotalCount.Direction = ParameterDirection.Output;
TotalPageCount.Direction = ParameterDirection.Output;
SqlDataReader dr=cmd.ExecuteReader();
sb.Append("{");
sb.Append("\"data");
sb.Append("\":[");
while (dr.Read())
{
sb.Append("{");
for (int i = 0; i < dr.FieldCount; i++)
{
sb.Append("\"");
sb.Append(dr.GetName(i));
sb.Append("\":\"");
sb.Append(dr.GetValue(i));
sb.Append("\",");
}
sb.Remove(sb.Length - 1, 1);
sb.Append("},");
}
sb.Remove(sb.Length - 1, 1);
sb.Append("]");
dr.Close();
connection.Close();
sb.Append(",\"totalCounts");
sb.Append("\":");
sb.Append(TotalCount.Value.ToString());
sb.Append("}");
return Convert.ToString(sb);
}
public bool IsReusable {
get {
return false;
}
}
}