Dreamweaver dede:内容页调用列表时SQL语句如何分页?
我们可以再嵌入一个类似于{ dede:list SQL SQL = & # 39;select * from wp _ posts & # 39pagesize = & # 3910'}要使用的标签。
好了,想法已经有了。接下来我们打开文件include/arc.listview.class.php给它做个小操作!
找到:
如果(!is _ object($ ctag)){ $ ctag = $ this-& gt;DTP-& gt;GetTag(& quot;列表& quot);}
这一段,在它后面添加以下代码:
如果(!is _ object($ ctag)){ $ ctag = $ this-& gt;DTP-& gt;GetTag(& quot;listsql & quot);if(is _ object($ ctag)){ $ cquery = $ ctag-& gt;GetAtt(& quot;sql & quot);$ cquery = preg _ replace(& quot;/SELECT(。*?)FROM/is & quot;,& quot选择count(*)作为dd FROM & quot,$ cquery);$ cquery = preg _ replace(& quot;/ORDER(。*?)SC/is & quot;,& quot”,$ cquery);$ row = $ this-& gt;dsql-& gt;GetOne($ cquery);if(is _ array($ row)){ $ this-& gt;total result = $ row[& # 39;dd & # 39];} else { $ this-& gt;total result = 0;} } }//结束
然后找到:
if($ctag->GetName()=="list") { $limitstart = ($this->PageNo-1) * $this->PageSize; $row = $this->PageSize; if(trim($ctag->GetInnerText())=="") { $InnerText = GetSysTemplets("list_fulllist.htm"); } else { $InnerText = trim($ctag->GetInnerText()); } $this->dtp->Assign($tagid, $this->GetArcList( $limitstart, $row, $ctag->GetAtt("col"), $ctag->GetAtt("titlelen"), $ctag->GetAtt("infolen"), $ctag->GetAtt("imgwidth"), $ctag->GetAtt("imgheight"), $ctag->GetAtt("listtype"), $ctag->GetAtt("orderby"), $InnerText, $ctag->GetAtt("tablewidth"), $ismake, $ctag->GetAtt("orderway") ) ); }if($ ctag-& gt;GetName()= = & quot;列表& quot){ $ limit start =($ this-& gt;page no-1)* $ this-& gt;页面大小;$ row = $ this-& gt;页面大小;if(trim($ ctag-& gt;GetInnerText())= = = & quot;”){ $ InnerText = GetSysTemplets(& quot;list _ fulllist.htm & quot);} else { $ InnerText = trim($ ctag-& gt;GetInnerText());} $ this-& gt;DTP-& gt;分配($tagid,$ this-& gt;GetArcList( $limitstart,$row,$ ctag-& gt;GetAtt(& quot;col & quot),$ ctag-& gt;GetAtt(& quot;titlelen & quot),$ ctag-& gt;GetAtt(& quot;infolen & quot),$ ctag-& gt;GetAtt(& quot;imgwidth & quot),$ ctag-& gt;GetAtt(& quot;imgheight & quot),$ ctag-& gt;GetAtt(& quot;列表类型& quot),$ ctag-& gt;GetAtt(& quot;orderby & quot),$InnerText,$ ctag-& gt;GetAtt(& quot;表格宽度& quot),$ismake,$ ctag-& gt;GetAtt(& quot;orderway & quot) ) );}
这一段,在它后面添加以下代码:
else if($ ctag-& gt;GetName()= = & quot;listsql & quot){ $ limit start =($ this-& gt;page no-1)* $ this-& gt;页面大小;$ row = $ this-& gt;页面大小;if(trim($ ctag-& gt;GetInnerText())= = = & quot;”){ $ InnerText = GetSysTemplets(& quot;list _ fulllist.htm & quot);} else { $ InnerText = trim($ ctag-& gt;GetInnerText());} $ this-& gt;DTP-& gt;分配($tagid,$ this-& gt;GetSqlList( $limitstart,$row,$ ctag-& gt;GetAtt(& quot;sql & quot),$ InnerText));}//结束
最后,找到函数GetArcList方法,然后添加一个方法,通过传入sql参数可以获得指定的数据源。代码如下:
/* * *通过listsql标签中的sql属性传入的参数获得一个单列文档列表* */functiongetsqllist($ limit start = 0,$ row = 10,$ SQL = & # 39',$ innertext){ global $ CFG _ list _ son;$ innertext = trim($ innertext);if($ innertext = = & # 39;'){ $ innertext = GetSysTemplets(& # 39;list _ fulllist.htm & # 39);}//处理SQL语句$limitStr = ” LIMIT {$limitstart},{ $ row } & quot;$ this-& gt;dsql-& gt;SetQuery($sql。$ limitStr);$ this-& gt;dsql-& gt;执行(& # 39;阿尔& # 39;);$ T2 = exec time();//echo $ T2-$ t1;$ sqllist = & # 39';$ this-& gt;DTP 2-& gt;load source($ innertext);$ GLOBALS[& # 39;自动索引& # 39;] = 0;//获取字段while($ row = $ this->;dsql-& gt;GetArray(& quot;艾尔& quot)){ $ GLOBALS[& # 39;自动索引& # 39;]
;if(is _ array($ this-& gt;DTP 2-& gt;CTags)){ foreach($ this-& gt;DTP 2-& gt;CTags as $ k = & gt$ ctag){ if($ ctag-& gt;GetName()= = & # 39;数组& # 39;){//传递整个数组,在runphp模式下有特殊作用$ this->:DTP 2-& gt;赋值($k,$ row);} else { if(isset($ row[$ ctag-& gt;GetName()])){ $ this-& gt;DTP 2-& gt;Assign($k,$ row[$ ctag-& gt;GetName()]);} else { $ this-& gt;DTP 2-& gt;分配($k,& # 39;');} } } } $sqllist。= $ this-& gt;DTP 2-& gt;GetResult();}//while $ T3 = exec time();//echo($ T3-$ T2);$ this-& gt;dsql-& gt;free result(& # 39;阿尔& # 39;);返回$ sqllist}//结束
一共添加了三段代码,每段代码基本上都引用了它正上方的原代码,没有在任何地方改动原代码,应该算是比较完美的操作了。接下来,模板文件中的使用方法就和最初的想法中提到的一样,分页标签还在使用。调用示例:
{ dede:list SQL SQL = & # 39;select ID,post _ title from wp _ posts & # 39pagesize = & # 3910'} & lt李& gt& lta href = & quothttp://ys 21426 . blog . 163 . com/[field:ID/]。html & quot& gt[field:post _ title/]& lt;/a & gt;& lt/李& gt{/dede:list SQL } & lt;!-分页-& gt;{ dede:page list listsize = & # 39;2'listitem = & # 39索引前一页没有下一页结束& # 39;/}
jquery分页排序插件jplist怎么弄?
jPList是一个灵活的jQuery插件,支持排序、分页和过滤的HTML结构(DIVs, UL/LI, tables,等等)。
特点 适用于任何内容(表、列表、p元素等) 升序和降序排序 字母数字和数字排序 日期和时间排序 自动分页 任意数量的文本框过滤器 任意数量的下降过滤器 复选框和单选按钮过滤器 数据来源:PHP + MySQL, ASP.NET + Sql Server, PHP + SQLite 支持本地存储和cookies 网格/列表视图演示页面 完全可定制的风格 在所有主要浏览器工作 SEO友好 带注释的源代码 详细的文档
如何在DataGrid控件中实现自定义分页?
在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解决这个问题. DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分 页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分 页,必须将AllowPaging与AllowCustomPaging属性都设置为”True”. 在DataGrid中要实现自定义分页的关键是,使该控件仅仅调用当前显示所需要的数据源数据,在下面的例子中通过CurrentPageIndex和PageSize属性的值,在数据绑定时只取当前页需要的数据. (1)页面代码: 复制代码 代码如下:<%@ Page language=”c#” Codebehind=”Main.aspx.cs” AutoEventWireup=”false” Inherits=”SissonDemo.Main” %> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” > <HTML> <HEAD> <title>Main</title> <meta name=”GENERATOR” Content=”Microsoft Visual Studio .NET 7.1″> <meta name=”CODE_LANGUAGE” Content=”C#”> <meta name=”vs_defaultClientScript” content=”JavaScript”> <meta name=”vs_targetSchema” content=”http://schemas.microsoft.com/intellisense/ie5″> </HEAD> <body MS_POSITIONING=”GridLayout”> <form id=”Form1″ method=”post” runat=”server”> <FONT face=”宋体”> <asp:DataGrid id=”DataGrid1″ runat=”server” Width=”792px” Height=”96px” AllowCustomPaging=”True” AllowPaging=”True” PageSize=”5″> <PagerStyle Mode=”NumericPages”></PagerStyle> </asp:DataGrid></FONT> </form> </body> </HTML> (2)后台代码: 复制代码 代码如下:using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace SissonDemo { /**//// <summary> /// Main 的摘要说明。 /// </summary> public class Main : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid DataGrid1; int startIndex = 0;//用来保存当前页数据项的起始索引 private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { Bind();//初始化时进行数据绑定 } } void Bind()//绑定数据方法 { //定义数据库连接对象 SqlConnection cn=new SqlConnection(“server=.;database=pubs;uid=sa;pwd=”); //创建数据适配对象 SqlDataAdapter da=new SqlDataAdapter(“select title_id ,title ,type, pub_id ,price,pubdate from titles”,cn); //创建DataSet对象 DataSet ds=new DataSet(); try { //从指定的索引开始取PageSize条记录. da.Fill(ds,startIndex,DataGrid1.PageSize,”CurDataTable”); da.Fill(ds,”AllDataTable”);//填充数据集合 //设置DataGrid控件实际要显示的项数 DataGrid1.VirtualItemCount=ds.Tables.Rows.Count; //进行数据绑定 DataGrid1.DataSource=ds.Tables; DataGrid1.DataBind(); } catch { Page.RegisterClientScriptBlock(“”,”<script>alert(‘数据显示错 误’);</script>”); } } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /**//// <summary> /// 设计器支持所需的方法 – 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler (this.DataGrid1_PageIndexChanged); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { //设置DataGrid当前页的索引值为用户选择的页的索引 DataGrid1.CurrentPageIndex=e.NewPageIndex; //取得当前页为止总共有多少条记录,以便在下一页就从该记录开始读取 startIndex=DataGrid1.PageSize*DataGrid1.CurrentPageIndex; //取得绑定数据 Bind(); } } } 在这段程序中,首先在数据绑定时,设置DataGrid控件的VirtualItemCoun属性值为查询结果集中的 记录总数,然后取得当前页要显示的数据,初始化时当前页显示的数据为从取到的数据的零位置开始,到 DataGrid控件的PageSize属性的设定值为止的数据记录数.在分页操作中重新定义了取得下一页数据时的数据项的开始索引值,然后调用数据绑定方法把取到的新数据和DataGrid控件重新绑定.
SQLServer两种分页的存储过程使用介绍?
存储过程:createProcedurepname(@pageIndexint,@pageSize)asselect*fromtableNameorderbyidoffset@pageIndex*pageSizefetchnextpageSizerowsonly分页:sqlserver在2008之前使用top和notinttop的方式来做分页2008以后使用row_number()函数作为分页关键函数2012使用offset1fetchnext10rowsonly你问了2个问题,你可以优先把视图,存储过程,触发器等弄明白,分页是查询,在存储过程里可以写复杂的sql文,只是在运行时是预编译和参数化查询防止sql注入