网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.一个BBS的源代码(五).
.用VB6做一个简单的文件上传组件(.
.ASP环境下邮件列表功能的实现 (.
.在主页中编制音频播放器.
.各种存储过程使用指南.
.用VB编写ActiveX DLL实现ASP编程.
.全文本检索的应用(1).
.ASP进阶之文章在线管理更新(11).
.接收信息页面inform.asp--基于we.
.SQL SERVER结构浏览器.
.使用JScript.NET创建asp.net页面.
.取得服务器上用户组列表的脚本之.
.构建你的网站新闻自动发布系统之.
.股票报价的WebService之三.
.用asp怎样编写文档搜索页面(2).
.一个简单的网上书城的例子(五).
.一个通用数据库显示程序.
.ASP SCRIPT: 计数器(使用GrapSho.
.ASP实现播放Flash的例子.
.用asp生成wml.

使用纯粹的asp+语言制作的栏目管理(二)

发表日期:2000-12-6


/*
豆腐制作 都是精品
http://www.asp888.net 豆腐技术站
如转载 请保留完整版权信息
*/
昨天我们看了 豆腐利用 asp.net 的特性作的 栏目管理的程序的第一部分,在今天的第二部分中,豆腐将把 昨天我们录入界面录入的数据显示出来,并且在这个部分,专门做了一个 用来进行分页管理的一个Pagelet,通过这个pagelet 我们将 Select 出来的记录进行了分页的处理,并且复习了我们以前的文章如何在asp+ 中使用自定义的pagelet通过这个程序,我们将会学习到在 asp.net 的编程中的一些中级的技术(其实更为高级的技术,我们在目前)的学习和应用的过程中,似乎还没有用到!不对,不对,是豆腐没有用到:)下面我们首先来看看我们作的这个ascx文件:也叫用户自定义组件文件
c.ascx:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<% @ Import Namespace="System.Drawing" %>
<script runat=server language="C#">
public SQLDataReader sRead; //这个是绑定的数据
public int intPageCount=5; //这个是每页需要显示的数据的多少 默认是10
public int intRecStart=0; //这个是当前数据的 起使位置, 默认是 0
public int intCurrentRow=0; //当前的Row 指针所在的位置
public int intRecCount; //当前的这个查询的记录总数

public void DataBind(){
int i;
for(i=0;i<intRecStart;i++){
sRead.Read();
}
}
public String GetVal(String strName){
sRead.Read();
return sRead[strName].ToString();
}
public bool MyRead(){
if(!sRead.Read())
return false;
if(intCurrentRow==intPageCount)
return false;
intCurrentRow++;
return true;
}
public void PageBar(){
TableCell c;
TableRow r = new TableRow();
c= new TableCell();
int ii=intRecCount;
//(ArrayList)sRead;
String strWrite;
if(intRecStart==0){
strWrite="首页 上页";
}
else
{
strWrite="<a href='c.aspx?start=0'>首页</a> <a href='c.aspx?start=" + (intRecStart-intPageCount).ToString() + "'>上页</a>";
}
if((intRecStart+intPageCount)>ii){
strWrite= strWrite + " 首页 上页";
}
else{
strWrite= strWrite + "<a href='c.aspx?start=" + (intRecStart+intPageCount).ToString() +"'>下页</a> <a href='c.aspx?start=" + (intRecStart+intPageCount).ToString() + "'>末页</a>";
}
c.Controls.Add(new LiteralControl(strWrite));
r.Cells.Add(c);

c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl("共有记录" + ii.ToString()));
r.Cells.Add(c);

Table1.Rows.Add(r);
}
</script>
<asp:Table id="Table1" GridLines="Both" HorizontalAlign="Center" Font-Name="Verdana" Font-Size="8pt" width=100% Runat="server"/>
然后,我们可以通过语句:
<%@ Register TagPrefix="asp888" TagName="myPageTable" Src="c.ascx" %>
可以把c.ascx 文件加入到 任意一个aspx 文件中,而且,我们可以在 aspx 文件中对 我们的这个 ascx 文件中的 public 定义的
参数进行Get 和 Set 的操作,就如同 操作<asp:TextBox> 的属性和方法是一样的,大家在这里一定要特别注意
<asp888:myPageTable id="menuControl1" runat=server />,这个就是我们在 通过 <% Register >中定义的PreFix 和 TagName
来组成的,这样我们通过这个程序,模拟了DataGrid 的 DataBind 的操作,同时也实现了分页的自动化
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<%@ Register TagPrefix="asp888" TagName="myPageTable" Src="c.ascx" %>
<script runat=server language="C#">
protected void Page_Load(Object Src, EventArgs E){
int intRecStart=Request.QueryString["start"].ToInt16();
SQLDataReader dbRead;
SQLCommand dbComm;
String strSQL;
String strConn;
SQLConnection conn;
Hashtable Cfg=new Hashtable();
Cfg = (Hashtable)Context.GetConfig("appsettings");
strConn=Cfg["Conn"].ToString();
conn = new SQLConnection(strConn);
//首先得到记录总数
strSQL="select count(*) from lanmu";
dbComm = new SQLCommand(strSQL, conn);
dbComm.ActiveConnection.Open();
dbComm.Execute(out dbRead);
dbRead.Read();
int intRecCount=dbRead.GetInt32(0);
dbComm.ActiveConnection.Close();
strSQL="select * from lanmu order by id desc";
dbComm = new SQLCommand(strSQL, conn);
dbComm.ActiveConnection.Open();
dbComm.Execute(out dbRead);
menuControl1.sRead=dbRead;
menuControl1.intRecStart=intRecStart;
menuControl1.intRecCount=intRecCount;
menuControl1.DataBind();
menuControl1.PageBar();
WriteTable();
}
void WriteTable(){
TableCell c;
TableRow r;


r = new TableRow(); //生成新的一行
c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl("序号"));
r.Cells.Add(c);

c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl("文章标题"));
r.Cells.Add(c);

c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl("阅读次数"));
r.Cells.Add(c);
tableTest.Rows.Add(r);
while(menuControl1.MyRead()){
r = new TableRow(); //生成新的一行

c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl(menuControl1.sRead["id"].ToString()));
r.Cells.Add(c);

//栏目的标题用 HyperLink 表示
HyperLink h=new HyperLink();
h.Text=menuControl1.sRead["title"].ToString();
h.NavigateUrl="viewarticle.aspx?id=" + menuControl1.sRead["id"].ToString();
c = new TableCell(); //生成新的一列
c.Controls.Add(h);
r.Cells.Add(c);

c = new TableCell(); //生成新的一列
c.Controls.Add(new LiteralControl(menuControl1.sRead["viewnum"].ToString()));
r.Cells.Add(c);

tableTest.Rows.Add(r);
}
return;
}
</script>
<html>
<head>
</head>

<body>
<asp888:myPageTable id="menuControl1" runat=server />
<asp:Table id="tableTest" width=100% GridLines="Both" Runat="server" HorizontalAlign="Center" Font-Name="Verdana" Font-Size="8pt" CellSpacing=0 />
</body>
</html>
当然,由于时间的关系,我的这个程序有的功能实现的还是比较粗糙和简单的,相信大家只要在这个程序的基础上 举一反三,一定可以学习到很多很多的知识。同志们,努力吧!

上一篇:使用纯粹的asp+语言制作的栏目管理(一) 人气:9770
下一篇:使用纯粹的asp+语言制作的栏目管理(三) 人气:9639
浏览全部的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐