本章博客包含了完整的分页查询与增删查改功能的DataGrid,将代码赋值粘贴到指定的位置,并配置对应的数据库即可运行!如果看不懂可以查看我之前的博客,有详细解析:
效果图:5-1
前台html:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="edit.aspx.cs" Inherits="web._20160524.edit" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
#fm{
margin:0;
padding:10px 30px;
}
.ftitle{
font-size:14px;
font-weight:bold;
padding:5px 0;
margin-bottom:10px;
border-bottom:1px solid #ccc;
}
.fitem{
margin-bottom:5px;
}
.fitem label{
display:inline-block;
width:80px;
}
.fitem input{
width:160px;
}
</style>
<script src="../js/jquery-1.7.1.min.js"></script>
<script src="../EasyUI/jquery.min.js"></script>
<script src="../EasyUI/jquery.easyui.min.js"></script>
<link href="../EasyUI/themes/icon.css" rel="stylesheet" />
<script src="../EasyUI/locale/easyui-lang-zh_CN.js"></script>
<link href="../EasyUI/themes/default/easyui.css" rel="stylesheet" />
<script src="../js/edit.js"></script>
</head>
<body>
<table id="tb1"></table>
<div id="tb" style="padding:5px">
<div style="margin-bottom:5px">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-reload" plain="true" οnclick="reload()">刷新</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" οnclick="AddEqument()">添加</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" οnclick="editEqument()">修改</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" οnclick="destroyEqument()">删除</a>
</div>
<div>
查询设备:<input id="eq" type="text" name="Eq" style="width:150px"/>
<select id="order" class="easyui-combobox" panelHeight="auto" style="width:100px">
<option value="asc">升序</option>
<option value="desc">降序</option>
</select>
<a href="#" class="easyui-linkbutton" iconCls="icon-search" οnclick="obj.search()">查询</a>
</div>
</div>
<%-- 弹窗 Start--%>
<div id="dlg" class="easyui-dialog" style="width:400px;height:320px;padding:10px 20px"
closed="true" buttons="#dlg-buttons">
<div class="ftitle">设备信息</div>
<form id="fm" method="post" novalidate>
<div class="fitem">
<label>设备编号:</label>
<input name="Eq_Number" id="Eq_Number" class="easyui-textbox" required="true"/>
</div>
<div class="fitem">
<label>出厂号:</label>
<input name="Eq_SN" id="Eq_SN" class="easyui-textbox" required="true"/>
</div>
<div class="fitem">
<label>名称:</label>
<input name="Eq_Name" id="Eq_Name" class="easyui-textbox" required="true"/>
</div>
<div class="fitem">
<label>型号:</label>
<input name="Eq_Type" id="Eq_Type" class="easyui-textbox" required="true"/>
</div>
<div class="fitem">
<label>规格:</label>
<input name="Eq_Standard" id="Eq_Standard" class="easyui-textbox" required="true"/>
</div>
<div class="fitem">
<label>厂家:</label>
<input name="Eq_Producer" id="Eq_Producer" class="easyui-textbox" required="true"/>
</div>
</form>
</div>
<div id="dlg-buttons">
<a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" οnclick="saveEqument()" style="width:90px">Save</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" οnclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a>
</div>
<%-- 弹窗 End --%>
</body>
</html>
实现增删查改的JS代码:
$(function () {
$('#tb1').datagrid({
url: '../20160521/EasyUI_load.ashx',
width: 1100,
title: '设备管理',
method: 'get',
toolbar: '#tb',
singleSelect:'true',
columns: [[
{ field: 'numID', title: '设备编号', width: 150 },
{ field: '出厂号', title: '出厂号', width: 150 },
{ field: '仪器名称', title: '名称', width: 150 },
{ field: '型号', title: '型号', width: 200 },
{ field: '规格', title: '规格', width: 150 },
{ field: '厂家', title: '厂家', width: 200 },
]],
pagination: true,
pageSize: 10,
pageList: [10, 15, 20, 25],
})
})
$(function () {
obj = {
search: function () {
$('#tb1').datagrid('load', {
Equement: $('input[name="Eq"]').val(),
order: $("#order").combobox('getValue')
});
}
}
})
function reload() {
document.getElementById("eq").value = ""
$('#tb1').datagrid('load', {
url: '../20160521/easyui_load.ashx',
page: '1',
rows: '10'
});
}
var add_edit;
function AddEqument() {
$('#dlg').dialog('open').dialog('center').dialog('setTitle', 'New Equment');
$('#fm').form('clear');
add_edit = "add";
}
function saveEqument() {
var Eq_Number = document.getElementById("Eq_Number").value;
var Eq_SN = document.getElementById("Eq_SN").value;
var Eq_Name = document.getElementById("Eq_Name").value;
var Eq_Type = document.getElementById("Eq_Type").value;
var Eq_Standard = document.getElementById("Eq_Standard").value;
var Eq_Producer = document.getElementById("Eq_Producer").value;
$('#fm').form('submit', {
url: "../20160524/edit.ashx?Eq_Number=" + Eq_Number + "&Eq_SN=" + Eq_SN + "&Eq_Name=" + Eq_Name + "&Eq_Type=" + Eq_Type +
"&Eq_Standard=" + Eq_Standard + "&Eq_Producer=" + Eq_Producer + "&add_edit=" + add_edit,
onSubmit: function () {
return $(this).form('validate');
},
success: function (result) {
if (result.indexOf("A") > 0) {
$('#dlg').dialog('close');
$.messager.alert("提示", "添加成功", "info");
$('#tb1').datagrid('reload');
}
if (result.indexOf("U") > 0) {
$('#dlg').dialog('close');
$.messager.alert("提示", "更新成功", "info");
$('#tb1').datagrid('reload');
}
if (result.indexOf("a") > 0) {
$.messager.alert("提示", "添加失败", "info");
return;
}
if (result.indexOf("u") > 0) {
$.messager.alert("提示", "更新失败", "info");
return;
}
$('#fm').form('clear');
}
});
}
function editEqument() {
add_edit = "edit";
var row = $('#tb1').datagrid('getSelected');
if (row) {
$('#dlg').dialog('open').dialog('center').dialog('setTitle', 'Edit Equemnt');
$('#fm').form('load', {
Eq_Number: row.numID,
Eq_SN : row.出厂号,
Eq_Name : row.仪器名称,
Eq_Type : row.型号,
Eq_Standard : row.规格,
Eq_Producer: row.厂家,
});
}
}
function destroyEqument() {
var row = $('#tb1').datagrid('getSelected');
if (row) {
$.messager.confirm('Confirm', '确定删除设备吗?', function (r) {
if (r) {
$.post('../20160524/delete.ashx', { id: row.numID }, function (result) {
if (result == 1) {
$('#tb1').datagrid('reload');
} else {
$.messager.alert("提示", "删除失败", "info");
}
});
}
});
}
}
加载数据并实现分页查询的的一般处理程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Text;
namespace web._20160521
{
/// <summary>
/// EasyUI_load1 的摘要说明
/// </summary>
public class EasyUI_load1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int page = 1, rows = 10;
//EasyUI自带的两个参数rows与page ,表示当前页与行数
if (context.Request.QueryString["rows"] != null)
{
rows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
}
if (context.Request.QueryString["page"] != null)
{
page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
}
//查询分页 stratIndex endIndex
int stratIndex, endIndex;
stratIndex = (page - 1) * rows + 1;
endIndex = page * rows;
//关键字查询 设备号码:Equement 升序降序:order
string Equement = "", order = "";
if (context.Request.QueryString["Equement"] != null)
{
Equement = context.Request.QueryString["Equement"].ToString().Trim();
}
if (context.Request.QueryString["order"] != null)
{
order = context.Request.QueryString["order"].ToString().Trim();
}
//设置模糊查询
StringBuilder EquementKey = new StringBuilder();
if (Equement != "")
{
EquementKey.AppendFormat("UPPER(numID) like '%{0}%' or " +
"upper(仪器名称) like '%{0}%' or " +
"upper(型号) like '%{0}%' or " +
"upper(规格) like '%{0}%' or " +
"upper(厂家) like '%{0}%' or " +
"upper(出厂号) like'%{0}%' or " +
"upper(供货商) like '%{0}%' ", Equement);
}
//查询数据库
HelperClass.SqlHelper sqlhelper = new HelperClass.SqlHelper();
//根据查询关键字获取查询数据的行数
int count = sqlhelper.EUGetRecordCount(EquementKey.ToString());
//封装数据到dataset
DataSet ds = sqlhelper.GetListByPagebykey(EquementKey.ToString(), order, stratIndex, endIndex);
//将dataset转化为Json格式
string strToJon = HelperClass.ToJson.DatasetJson(ds, count);
context.Response.Write(strToJon);
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
实现增加与修改操作的一般处理程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
namespace web._20160524
{
/// <summary>
/// edit1 的摘要说明
/// </summary>
public class edit1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string msg;
context.Response.ContentType = "text/plain";
if (null != context.Request.QueryString["add_edit"].ToString().Trim())
{
HelperClass.ToModel toModel = new HelperClass.ToModel()
{
Eq_Number = context.Request.QueryString["Eq_Number"].ToString().Trim(),
Eq_SN = context.Request.QueryString["Eq_SN"].ToString().Trim(),
Eq_Name = context.Request.QueryString["Eq_Name"].ToString().Trim(),
Eq_Type = context.Request.QueryString["Eq_Type"].ToString().Trim(),
Eq_Standard = context.Request.QueryString["Eq_Standard"].ToString().Trim(),
Eq_Producer = context.Request.QueryString["Eq_Producer"].ToString().Trim(),
};
HelperClass.SqlHelper addModel = new HelperClass.SqlHelper();
switch (context.Request.QueryString["add_edit"].ToString().Trim())
{
case "add":
if (addModel.Add(toModel)>0)
{
msg = "['msg':'A']";
context.Response.Write(msg);
}
else
{
msg = "['msg':'a']";
context.Response.Write(msg);
}
break;
case "edit":
if (addModel.Update(toModel))
{
msg = "['msg':'U']";
context.Response.Write(msg);
}
else
{
msg = "['msg':'u']";
context.Response.Write(msg);
}
break;
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
实现删除操作的一般处理程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace web._20160524
{
/// <summary>
/// delete 的摘要说明
/// </summary>
public class delete : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (null != context.Request["id"].ToString().Trim())
{
string Eq_Number = context.Request["id"].ToString().Trim();
HelperClass.SqlHelper deleteEq = new HelperClass.SqlHelper();
if(deleteEq.Delete(Eq_Number))
{
context.Response.Write(1);
}
else
{
context.Response.Write(0);
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
对数据库操作的SQLHelper:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Text;
using System.Data.SqlClient;
namespace web.HelperClass
{
public class SqlHelper
{
protected static readonly string conStr = @"Data Source=.;Database=db_equipment;uid=sa;pwd=123456";
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
/// <summary>
/// 将数据填充到dataset
/// </summary>
/// <param name="sqlcon">查询语句</param>
/// <returns>返回一个dataset</returns>
public DataSet Query(string sqlcon)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
DataSet ds = new DataSet();
try
{
conn.Open();
SqlDataAdapter dapter = new SqlDataAdapter(sqlcon, conn);
dapter.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
}
}
public static object GetSingle(string SQLString)
{
using (SqlConnection connection = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 获取行数
/// </summary>
/// <returns></returns>
public int EUGetRecordCount()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) FROM tb_equipment ");
object obj = GetSingle(strSql.ToString());
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
/// <summary>
/// 根据输入的条件获取行数
/// </summary>
/// <param name="EquementKey">查询条件</param>
/// <returns>返回行数</returns>
public int EUGetRecordCount(string EquementKey)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) FROM tb_equipment ");
if (EquementKey.Trim() != "")
{
strSql.Append(" where " + EquementKey);
}
object obj = GetSingle(strSql.ToString());
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
/// <summary>
/// 查询分页数据,封装到dataset
/// </summary>
/// <param name="startIndex"></param>
/// <param name="endIndex"></param>
/// <returns></returns>
public DataSet GetListByPage(int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
strSql.Append("order by T.numID asc");
strSql.Append(")AS Row, T.* from tb_equipment " + " T ");
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return Query(strSql.ToString());
}
/// <summary>
/// 查询分页数据,并排序
/// </summary>
/// <param name="sort">列字段</param>
/// <param name="order">排序asc或者desc</param>
/// <param name="startIndex"></param>
/// <param name="endIndex"></param>
/// <returns></returns>
public DataSet GetListByPage(string sort, string order, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(order.Trim())|| !string.IsNullOrEmpty(sort.Trim()))
{
strSql.Append("order by T." + sort + " " + order);
}
else
{
strSql.Append("order by T.numID asc");
}
strSql.Append(")AS Row, T.* from tb_equipment T ");
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return Query(strSql.ToString());
}
/// <summary>
/// 带条件与排序的查询方法
/// </summary>
/// <param name="EquementKey">检索关键字</param>
/// <param name="order">排序</param>
/// <param name="startIndex">查询开始位置</param>
/// <param name="endIndex">查询结束位置</param>
/// <returns></returns>
public DataSet GetListByPagebykey(string EquementKey, string order, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(EquementKey.Trim()))
{
strSql.Append("order by T.numID " + order);
}
else
{
strSql.Append("order by T.numID asc");
}
strSql.Append(")AS Row, T.* from tb_equipment T ");
if (!string.IsNullOrEmpty(EquementKey.Trim()))
{
strSql.Append(" WHERE " + EquementKey);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return Query(strSql.ToString());
}
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
throw e;
}
}
}
}
/// <summary>
/// 增加一条数据
/// </summary>
public int Add(ToModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into tb_equipment(");
strSql.Append("numID,出厂号,仪器名称,型号,规格,厂家)");
strSql.Append(" values (");
strSql.Append("@Eq_Number,@Eq_SN,@Eq_Name,@Eq_Type,@Eq_Standard,@Eq_Producer)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@Eq_Number", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_SN", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Name", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Type", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Standard ", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Producer", SqlDbType.NVarChar,255),
//new SqlParameter("@Eq_Price", SqlDbType.Float)
};
parameters[0].Value = model.Eq_Number;
parameters[1].Value = model.Eq_SN;
parameters[2].Value = model.Eq_Name;
parameters[3].Value = model.Eq_Type;
parameters[4].Value = model.Eq_Standard;
parameters[5].Value = model.Eq_Producer;
// parameters[6].Value = model.Eq_Price;
object obj = GetSingle(strSql.ToString(), parameters);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(ToModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update tb_equipment set ");
strSql.Append(" 出厂号=@Eq_SN,");
strSql.Append(" 仪器名称=@Eq_Name,");
strSql.Append(" 型号=@Eq_Type,");
strSql.Append(" 规格=@Eq_Standard,");
strSql.Append(" 厂家=@Eq_Producer");
//strSql.Append(" 单价=@Eq_Price");
strSql.Append(" where numID=@Eq_Number");
SqlParameter[] parameters = {
new SqlParameter("@Eq_Number", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_SN", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Name", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Type", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Standard ", SqlDbType.NVarChar,255),
new SqlParameter("@Eq_Producer", SqlDbType.NVarChar,255),
//new SqlParameter("@Eq_Price", SqlDbType.Float)
};
parameters[0].Value = model.Eq_Number;
parameters[1].Value = model.Eq_SN;
parameters[2].Value = model.Eq_Name;
parameters[3].Value = model.Eq_Type;
parameters[4].Value = model.Eq_Standard;
parameters[5].Value = model.Eq_Producer;
//parameters[6].Value = model.Eq_Price;
int rows = ExecuteSql(strSql.ToString(), parameters);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 删除一条数据
/// </summary>
public bool Delete(string Eq_Number)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from tb_equipment ");
strSql.Append(" where numID=@Eq_Number");
SqlParameter[] parameters = {
new SqlParameter("@Eq_Number", SqlDbType.NVarChar,255)
};
parameters[0].Value = Eq_Number;
int rows = ExecuteSql(strSql.ToString(), parameters);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
}
}
封装实体对象的类ToModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace web.HelperClass
{
public class ToModel
{
private string _Eq_Number;
public string Eq_Number
{
get { return _Eq_Number; }
set { _Eq_Number = value; }
}
private string _Eq_SN;
public string Eq_SN
{
get { return _Eq_SN; }
set { _Eq_SN = value; }
}
private string _Eq_Name;
public string Eq_Name
{
get { return _Eq_Name; }
set { _Eq_Name = value; }
}
private string _Eq_Type;
public string Eq_Type
{
get { return _Eq_Type; }
set { _Eq_Type = value; }
}
private string _Eq_Standard;
public string Eq_Standard
{
get { return _Eq_Standard; }
set { _Eq_Standard = value; }
}
private string _Eq_Producer;
public string Eq_Producer
{
get { return _Eq_Producer; }
set { _Eq_Producer = value; }
}
}
}
将DataSet转换为Json对象的帮助类ToJson:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
namespace web.HelperClass
{
public class ToJson
{
#region DataSet转换成Json格式
/// <summary>
/// DataSet转换成Json格式
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public static string DatasetJson(DataSet ds, int total = -1)
{
StringBuilder json = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
//{"total":5,"rows":[
json.Append("{\"total\":");
if (total == -1)
{
json.Append(dt.Rows.Count);
}
else
{
json.Append(total);
}
json.Append(",\"rows\":[");
json.Append(DataTableJson(dt));
json.Append("]}");
}
return json.ToString();
}
}
}
由于本人是.net初学者,功底不行,代码复用性之类的完全可以忽略,请见谅!