ASP 使用jqGrid实现读写删的代码(json)

  jqGrid是一个优秀的基于jQuery的DataGrid框架,想必大伙儿也不陌生,网上基于ASP的资料很少,我提供一个,数据格式是json的:

  、一个针对jqGrid的json类:这段代码似乎是由官网论坛的一些PHP中转化而来,我们存为json.asp,代码贴一下:

  

复制代码 代码如下:

  <%

  response.Charset="utf-8"

  '---------------------------------------

  ' JSONClass类

  ' 将Select语句的执行结果转换成JSON

  '------------------------------------------

  Class JSONClass

  ' 定义类属性,默认为Private

  Dim SqlString ' 用于设置Select

  Dim JSON ' 返回的JSON对象的名称

  Dim DBConnection ' 连接到数据库的Connection对象

  ' 可以外部调用的公共方法

  Public Function GetJSON ()

  dim Rs

  dim returnStr

  dim i

  dim oneRecord

  ' 获取数据

  Set Rs= Server.CreateObject("ADODB.Recordset")

  Rs.open SqlString,DBConnection,1,1

  if page<>"" then

  epage=cint(page)

  if epage<1 then epage=1

  if epage>rs.pagecount then epage=rs.pagecount

  else

  epage=1

  end if

  rs.pagesize = rows

  rs.absolutepage = epage

  ' 生成JSON字符串

  if Rs.eof=false and Rs.Bof=false then

  returnStr="{ total: "& rs.pagecount &", page: "& page &", records: "& rs.recordcount &", rows:["

  for j=0 to rs.pagesize-1

  if rs.bof or rs.eof then exit for

  ' -------

  'oneRecord = "{id:" & chr(34) &Rs.Fields(0).Value&chr(34)&",cell:["& chr(34) &Rs.Fields(0).Value&chr(34)&","

  oneRecord = "{id:" & chr(34) &Rs.Fields(0).Value&chr(34)&",cell:["& chr(34) &Rs.Fields(0).Value&chr(34)&","

  for i=1 to Rs.Fields.Count -1

  'oneRecord=oneRecord & chr(34) &Rs.Fields(i).Name&chr(34)&":"

  oneRecord=oneRecord & chr(34) &Rs.Fields(i).Value&chr(34) &","

  Next

  '去除记录最后一个字段后的","

  oneRecord=left(oneRecord,InStrRev(oneRecord,",")-1)

  oneRecord=oneRecord & "]},"

  '------------

  returnStr=returnStr & oneRecord

  Rs.MoveNext

  next

  ' 去除所有记录数组后的","

  returnStr=left(returnStr,InStrRev(returnStr,",")-1)

  returnStr=returnStr & "]}"

  end if

  Rs.close

  set Rs=Nothing

  GetJSON=returnStr

  End Function

  '私用方法,在类中使用

  Private Function check()

  End Function

  '

  End Class

  %>

  2、制作显示数据的asp文件,如:list.asp,代码如下

  

复制代码 代码如下:

  <!--#include file="conn.asp" -->

  <!--#include file="json.asp" -->

  <%

  dim page,rows,sidx,sord

  page = request.QueryString("page") 'page

  rows = request.QueryString("rows") 'pagesize

  sidx = request.QueryString("sidx") 'order by ??

  sord = request.QueryString("sord")

  if page="" then page = 1 end if

  if rows = "" then rows = 10 end if

  if sidx = "" then sidx = "id" end if

  if sord = "" then sord ="asc" end if

  Dim strSearchOn, strField, strFieldData, strSearchOper, strWhere

  strSearchOn = Request("_search")

  If (strSearchOn = "true") Then

  strField = Request("searchField")

  If (strField = "id" Or strField = "Title" Or strField = "NickName") Then

  strFieldData = Request("searchString")

  strSearchOper = Request("searchOper")

  'construct where

  strWhere = " Where " & strField

  Select Case strSearchOper

  Case "bw" : 'Begin With

  strFieldData = strFieldData & "%"

  strWhere = strWhere & " LIKE '" & strFieldData & "'"

  Case "eq" : 'Equal

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " = " & strFieldData

  Else

  strWhere = strWhere & " = '" & strFieldData & "'"

  End If

  Case "ne": 'Not Equal

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " <> " & strFieldData

  Else

  strWhere = strWhere & " <> '"& strFieldData &"'"

  End If

  Case "lt": 'Less Than

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " <" & strFieldData

  Else

  strWhere = strWhere & " <'"& strFieldData &"'"

  End If

  Case "le": 'Less Or Equal

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " <= " & strFieldData

  Else

  strWhere = strWhere & " <= '"& strFieldData &"'"

  End If

  Case "gt": 'Greater Than

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " > " & strFieldData

  Else

  strWhere = strWhere & " > '"& strFieldData &"'"

  End If

  Case "ge": 'Greater Or Equal

  If(IsNumeric(strFieldData)) Then

  strWhere = strWhere & " >= " & strFieldData

  Else

  strWhere = strWhere & " >= '"& strFieldData &"'"

  End If

  Case "ew" : 'End With

  strWhere = strWhere & " LIKE '%" & strFieldData & "'"

  Case "cn" : 'Contains

  strWhere = strWhere & " LIKE '%" & strFieldData & "%'"

  End Select

  End if

  End If

  server.ScriptTimeout=9000

  dim a

  set a=new JSONClass

  a.Sqlstring="Select id,Title,NickName,Pwd,LastLoginTime From Admin"&strWhere&" "&"order by "& sidx & " " & sord

  a.dbconnection=conn

  response.Write(a.GetJSon())

  conn.close()

  set conn = nothing

  %>

  里面把搜索的代码涵盖了。这样基本实现了读,至于jqGrid中的editurl的文件,我们称其edit.asp,代码如下:

  

复制代码 代码如下:

  <%Option Explicit%>

  <!--#include file="config.asp"-->

  <%

  Dim strOper, strID, strNickName, strTitle, strPwd

  strOper = Request("oper")

  strID = Replace(Request("Id"),"'","''")

  strTitle = Replace(Request("Title"),"'","''")

  strNickName = Replace(Request("NickName"),"'","''")

  strPwd = Replace(Request("Pwd"),"'","''")

  Select Case strOper

  Case "add": 'Add Record

  strSQL = "Insert Into Admin (Title, NickName, Pwd,LastLoginTime) Values('"&strTitle&"', '"&strNickName&"', '"&strPwd&"',Now()) "

  Case "edit": 'Edit Record

  strSQL = "Update Admin Set Title = '"&strTitle&"', NickName = '"&strNickName&"', Pwd = '"&strPwd&"' Where id = "&strID

  Case "del": 'Delete Record

  strSQL = "Delete From Admin Where id = "&strID

  End Select

  'response.Write strSQL

  Dim strSQL,rs

  Call OpenDB()

  Set rs = Conn.Execute(strSQL)

  Call CloseDB()

  %>

  这是前台index.html代码

  

复制代码 代码如下:

  <!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>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title>ASP_jqGrid_Test</title>

  <link rel="stylesheet" type="text/css" href="jquery-ui-1.7.2.custom.css"/>

  <link rel="stylesheet" type="text/css" href="jqgrid.css"/>

  <link rel="stylesheet" type="text/css" href="ui.multiselect.css"/>

  <script type="text/javascript" src="js/jquery.js"></script>

  <script type="text/javascript" src="js/cn.js"></script>

  <script type="text/javascript" src="js/jqGrid.js"></script>

  </head>

  <body>

  <table id="DataGrid" class="scroll"></table>

  <div id="pager" class="scroll" style="text-align:center;"></div>

  </body>

  </html>

  <script type="text/javascript">

  jQuery("#DataGrid").jqGrid({

  url:'list.asp',

  datatype: "json",

  colNames:['ID','管理员账号','管理员昵称','密码','上次登录时间'],

  colModel :[

  {

  name:'Id',

  index:'Id',

  width:50

  },

  {

  name:'Title',

  index:'Title',

  editable:true,

  editrules:{

  required:true

  }

  },

  {

  name:'NickName',

  index:'NickName',

  editable:true,

  editrules:{

  required:true

  }

  },

  {

  name:'Pwd',

  index:'Pwd',

  editable:true,

  edittype:'password',

  hidden:true,

  editoptions:{

  size:20

  },

  editrules:{

  edithidden:true

  }

  },

  {

  name:'LastLoginTime',

  index:'LastLoginTime',

  align:'right',

  editrules:{

  required:true

  }

  } ], caption:"管理员列表",

  imgpath:'/images',

  multiselect: true,

  rowNum:20,

  rowList:[10,20,30],

  pager: jQuery('#pager'),

  sortname: 'Id',

  viewrecords: true,

  sortorder: "desc",

  height:400,

  width:600,

  editurl:"edit.asp"

  });

  $('#DataGrid').navGrid('#pager',{

  refresh: true,

  edit: true,

  add: true,

  del: true,

  search: true,

  searchtext:"搜",

  edittext:"改",addtext:"添",deltext:"删"

  });

  </script>

  jqGrid,好东西~~