c# 转json 储存过程篇 EXTJS grid表格

<%@ 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;
}
}

}

posted @ 2011-09-14 15:40  net 学习网  阅读(494)  评论(0)    收藏  举报