惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threat Research - Cisco Blogs
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
Latest news
Latest news
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
IT之家
IT之家
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
Google Developers Blog
T
Tor Project blog
T
Threatpost
D
DataBreaches.Net
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Troy Hunt's Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
博客园_首页
S
Securelist
T
The Exploit Database - CXSecurity.com
Last Week in AI
Last Week in AI
量子位
U
Unit 42
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志

博客园 - 蓝箭GZ

[转载]AgileEAS.NET 敏捷软件开发平台 致力于中小企业快速应用开发 原创:分享通过简单设置提速3D游戏!(如果内存大,请禁用虚拟内存。) 原创:分享大内存的XP系统终极优化经验! 原创:VS2005开发的一些实用经验一(VB.NET--WINFORM) 转贴:Vbs脚本编程简明教程! 终于找到一款非常强大的程序代码编辑器PrimalScript v4.0.484汉化版! 空牙-游戏音乐合成视频 转:怀念街机的那段传奇历史 原创:ASP.NET2.0中使用AJAX1.0控件的一点经验 原创:基于VB的ASP.NET2.0的事务及错误处理 原创:Flash cs3 等软件不能在win2003sp1上安装的问题解决(安装遇到错误无法继续, 无法访问Windows Installer服务......) 原创:简单的ASP无组件上传原理实践总结! 转贴:检测系统颜色与使用字体 原创:我理解的ActiveX组件和对象 (转贴) Microsoft XML 分析器 (MSXML) 的版本列表 (转贴) Microsoft .NET Framework 的版本列表 关于网上的一篇很好的文章(RECORDSET对象详解)所存在的错误! (转贴) ADO.NET的开发场景及传统ADO的处理 (转贴) 数据库设计三大范式应用实例剖析
原创:EXT2.0通过ASP动态生成json数据并分页!
蓝箭GZ · 2008-10-03 · via 博客园 - 蓝箭GZ

共分三部分:

一、主程序:index_json.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!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>无标题文档</title>

<link rel="stylesheet" type="text/css" href="ext2/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="ext2/examples/examples.css" />  
<script type="text/javascript" src="ext2/adapter/ext/ext-base.js"></script>  
<script type="text/javascript" src="ext2/ext-all.js"></script>
<script type="text/javascript" src="ext2/source/locale/ext-lang-zh_CN.js"></script>
 
<script type="text/javascript">
 

Ext.onReady(function(){  

//定义表头
var cm = new Ext.grid.ColumnModel([
    {header:'学号',dataIndex:'Stu_id'},
    {header:'姓名',dataIndex:'Stu_name'},
    {header:'性别',dataIndex:'Stu_sex'},
 {header:'生日',dataIndex:'Birthday'},
 {header:'电话',dataIndex:'Phone'},
    {header:'地址',dataIndex:'Address'},
 {header:'class_id',dataIndex:'Class_id'}
]);
cm.defaultSortable = true;


//从后台取由jsondata.asp动态生成的json格式数据
var proxy=new Ext.data.HttpProxy({url:'jsondata.asp'}); 
          var reader=new Ext.data.JsonReader(  
            {
  totalProperty:'mytotal',       //记录总数
        root:'root',  
        id:'Stu_id'          
            },[  
                {name: 'Stu_id'},  
                {name: 'Stu_name'},  
                {name: 'Stu_sex'},   
                {name: 'Birthday'},  
                {name: 'Phone'},  
                {name: 'Address'},             
                {name: 'Class_id'}             
            ])  
    //构建Store     
        var ds=new Ext.data.Store({  
          proxy:proxy,  
          reader:reader  
       });  
    //载入  
 
ds.load({params:{start:0,limit:15}}); //向后以传入参数并开始取数据  


//显示数据
var grid = new Ext.grid.GridPanel({
 stripeRows: true,
    el: 'mydiv',
    ds: ds,
    cm: cm,
 height :450, // 高度
 width:Ext.get("mydiv").getWidth(),
 title :'学员信息表', // 表格的标题
 bbar: new Ext.PagingToolbar({
        pageSize: 15,
        store: ds,
        displayInfo: true,
        displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
        emptyMsg: "没有记录"
    })
});

grid.render();
 

});
</script>


</head>

<body>

<div id='mydiv' style="width:720px"></div>

</body>
</html>

二、后台程序

jsondada.asp

<!-- #include file=conn.asp -->
<!-- #include file=jsonclass.asp -->
<%
set json = new jsonclass
json.sql = "select * from student"
json.root = "student"
response.charset="utf-8"
'取得客户端传过来的开始记录号和每页记录数
start = cint(request("start"))
limit = cint(request("limit"))

'start = 100
'limit = 20
'输出从start开始到start+limit(类中已加入判断,如果start+limit大于总记录数,就输出到最后一条记录为止)的json格式的所有记录!
response.Write((json.getjson(start,limit)))

%>

三、asp生成json格式文字的类

jsonclass.asp

<%
'---------------------------------------
' jsonclass类
' 将select语句的执行结果转换成json
'
'json标准格式:

'{mytotal:100,root:[{"id","123","name","张三"},{"id","456","name","李四"}]}
'
'或
'
'{mytotal:100,root:[{id,"123",name,"张三"},{id,"456",name,"李四"}]}
'
'------------------------------------------
class jsonclass
' 定义类属性,默认为private
dim p_sqlstring ' 用于设置select
dim p_root ' 返回的json对象的名称
dim rs,conn

private sub class_initialize()
sqlstring = ""
json = ""
'初始化conn和rs
call initconn(conn)
call initrs(rs)
end sub

private sub class_terminate()
'清除conn和rs
call clearconn(conn)
call clearrs(rs)
end sub

' 可以外部调用的公共方法
public function getjson(x,y)

dim rs
dim returnstr
dim i
dim onerecord
dim start
dim limit
dim mycount
dim json
dim ls
start=x
limit=y

'计算记录总数
set rs88= server.createobject("adodb.recordset")
rs88.open sql,conn,1,1
mycount=cint(rs88.recordcount)
'response.write(mycount)
rs88.close
set rs88=nothing

'判断start+limit是否大于记录总数
ls=cint(start)+cint(limit)
if ls>=mycount then
ls=mycount
end if

' 获取数据
set rs= server.createobject("adodb.recordset")
rs.open sql,conn,1,1

' 生成json字符串
if rs.eof=false and rs.bof=false then
json=cstr("{mytotal:"& mycount & ",root:[")
   
for i = start+1 to ls
rs.absoluteposition=i     '将记录指针移到i--记录开始的位置

'读取记录中的各列数据
onerecord="{"
for j=0 to rs.fields.count -1
onerecord=onerecord & chr(34) & rs.fields(j).name&chr(34) &":"
if j=rs.fields.count-1 then  '是最后一列,就不加逗号
onerecord=onerecord & chr(34) & rs.fields(j).value&chr(34)
else
onerecord=onerecord & chr(34) & rs.fields(j).value&chr(34) &","
end if

next
onerecord=onerecord & "}"

'去除最后一条记录后的","
if i <> ls then
            onerecord =onerecord + ","
        end if

'------------
json=json & onerecord
next
json = json +"]}"

'返回json格式字串
getjson=json
end if
end function

'私用方法,在类中使用
private function check()

end function

'数据库操作
sub initconn(conn)
set conn=server.createobject("adodb.connection")
conn.mode=3
conn.open connstr
end sub

sub clearconn(conn)
conn.close
set conn=nothing
end sub

sub initrs(rs)
set rs=server.createobject("adodb.recordset")
end sub
sub clearrs(rs)
set rs=nothing
end sub

public property get sql
sql = p_sqlstring
end property

public property let sql(value)
p_sqlstring = value
end property

public property get root
root = p_root
end property

public property let root(value)
p_root = value
end property
'
end class
%>

四、其它

conn.asp 数据库连接

最后调试成功。如图:

参考文章:

Ext2.0框架的Grid使用介绍