冷月葬花魂 发表于 2015-1-16 23:14:33

ASP教程之DataGrid自界说分页存储历程

缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。datagrid|存储历程|分页存储历程代码:

CREATEprocpage
@RecordCountintoutput,
@QueryStrnvarchar(100)=table1,--表名、视图名、查询语句
@PageSizeint=20,--每页的巨细(行数)
@PageCurrentint=1,--要显现的页
@FdShownvarchar(1000)=*,--要显现的字段列表
@IdentityStrnvarchar(100)=id,--主键
@WhereStrnvarchar(200)=1=1andid%11111=0,
@FdOrdernvarchar(100)=id,--排序
@isReturnbit=0
as
declare
@sqlnvarchar(2000)
set@sql=
if@WhereStr=begin
set@WhereStr=1=1
end
declare@tsqlnvarchar(200)
if(@isReturn=1)begin
set@tsql=Nselect@RecordCount=count(*)from+@QueryStr+where+@WhereStr
execsp_executesql@tsql,N@RecordCountintoutput,@RecordCountoutput
end
elsebegin
set@RecordCount=@PageSize*@PageCurrent+1
end
if@PageCurrent=1begin
set@sql=selecttop+cast(@PageSizeasnvarchar(3))++@FdShow+from+@QueryStr+where+@WhereStr+orderby+@IdentityStr
end
elsebegin
set@sql=selecttop+cast(@PageSizeasnvarchar(3))++@FdShow+from+@QueryStr+where+@WhereStr+and+@IdentityStr+>(selectmax(+@IdentityStr+)from(selecttop+cast(@PageSize*(@PageCurrent-1)asnvarchar(10))++@IdentityStr+from+@QueryStr+where+@WhereStr+orderby+@IdentityStr+)ast)orderby+@IdentityStr
end
if@FdOrderand@FdOrder@IdentityStrbegin
set@sql=select*from(+@sql+)ast4867435348493orderby+@FdOrder
end
--print@sql
execute(@sql)
GO

背景代码:
protectedSystem.Web.UI.WebControls.DataGridDataGrid1;

privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处安排用户代码以初始化页面
if(!Page.IsPostBack)
{
DataGrid1DataBind(1);
}
}
privatevoidDataGrid1DataBind(intpage)
{
SqlConnectionconn=newSqlConnection("server=qq;uid=sa;pwd=***;database=testdb");
SqlCommandcmd=newSqlCommand("page",conn);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameterp1=cmd.Parameters.Add("@RecordCount",SqlDbType.Int);
p1.Direction=ParameterDirection.Output;
SqlParameterp=cmd.Parameters.Add("@PageCurrent",SqlDbType.Int);
p.Value=page;
SqlDataAdapterda=newSqlDataAdapter();
DataSetds=newDataSet();
da.SelectCommand=cmd;
da.Fill(ds);
DataGrid1.DataSource=ds.Tables.DefaultView;
intcount=int.Parse(cmd.Parameters["@RecordCount"].Value.ToString());
if(null==ViewState["page"]||""==ViewState["page"].ToString())
{
ViewState["page"]=count.ToString();
}
else
{
count=int.Parse(ViewState["page"].ToString());
}

DataGrid1.VirtualItemCount=count;
DataGrid1.DataBind();
}
privatevoidDataGrid1_PageIndexChanged(objectsource,System.Web.UI.WebControls.DataGridPageChangedEventArgse)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
DataGrid1DataBind(e.NewPageIndex+1);
}

使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。

蒙在股里 发表于 2015-1-17 13:16:00

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

飘飘悠悠 发表于 2015-1-20 18:11:07

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

只想知道 发表于 2015-1-24 12:38:32

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

小女巫 发表于 2015-1-26 23:53:13

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

冷月葬花魂 发表于 2015-2-2 22:22:52

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

若天明 发表于 2015-2-8 14:18:44

不能只是将它停留在纸上谈兵的程度上。

飘灵儿 发表于 2015-2-25 16:23:33

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

深爱那片海 发表于 2015-3-7 23:43:49

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

兰色精灵 发表于 2015-3-22 02:10:23

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页: [1]
查看完整版本: ASP教程之DataGrid自界说分页存储历程