㈠ 分页显示怎么使用
目前最好的JSP分页技术
在使用数据库的过程中,不可避免的需要使用到分页的功能,可是JDBC的规范对此却没有很好的解决。对于这个需求很多朋友都有自己的解决方案,比如使用Vector等集合类先保存取出的数据再分页。但这种方法的可用性很差,与JDBC本身的接口完全不同,对不同类型的字段的支持也不好。这里提供了一种与JDBC兼容性非常好的方案。
JDBC和分页
Sun的JDBC规范的制定,有时很让人哭笑不得,在JDBC1.0中,对于一个结果集(ResultSet)你甚至只能执行next()操作,而无法让其向后滚动,这就直接导致在只执行一次SQL查询的情况下无法获得结果集的大小。所以,如果你使用的是JDBC1.0的驱动,那么是几乎无法实现分页的。
好在Sun的JDBC2规范中很好的弥补了这一个不足,增加了结果集的前后滚动操作,虽然仍然不能直接支持分页,但我们已经可以在这个基础上写出自己的可支持分页的ResultSet了。
和具体数据库相关的实现方法
有一些数据库,如Mysql, Oracle等有自己的分页方法,比如Mysql可以使用limit子句,Oracle可以使用ROWNUM来限制结果集的大小和起始位置。这里以Mysql为例,其典型代码如下:
// 计算总的记录条数
String SQL = "SELECT Count(*) AS total " + this.QueryPart;
rs = db.executeQuery(SQL);
if (rs.next())
Total = rs.getInt(1);
// 设置当前页数和总页数
TPages = (int)Math.ceil((double)this.Total/this.MaxLine);
CPages = (int)Math.floor((double)Offset/this.MaxLine+1);
// 根据条件判断,取出所需记录
if (Total > 0) {
SQL = Query + " LIMIT " + Offset + " , " + MaxLine;
rs = db.executeQuery(SQL);
}
return rs;
}
毫无疑问,这段代码在数据库是Mysql时将会是漂亮的,但是作为一个通用的类(事实上我后面要提供的就是一个通用类库中的一部分),需要适应不同的数据库,而基于这个类(库)的应用,也可能使用不同的数据库,所以,我们将不使用这种方法。
另一种繁琐的实现方法
我看过一些人的做法(事实上包括我在内,一开始也是使用这种方法的),即不使用任何封装,在需要分页的地方,直接操作ResultSet滚到相应的位置,再读取相应数量的记录。其典型代码如下:
<%
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
strSQL = "select name,age from test";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
</tr>
<%
sqlRst.next();
i++;
}
}
%>
</table>
很显然,这种方法没有考虑到代码重用的问题,不仅代码数量巨大,而且在代码需要修改的情况下,将会无所适从。
使用Vector进行分页
还见过另一些实现分页的类,是先将所有记录都select出来,然后将ResultSet中的数据都get出来,存入Vector等集合类中,再根据所需分页的大小,页数,定位到相应的位置,读取数据。或者先使用前面提到的两种分页方法,取得所需的页面之后,再存入Vector中。
扔开代码的效率不说,单是从程序结构和使用的方便性上讲,就是很糟糕的。比如,这种做法支持的字段类型有限,int, double, String类型还比较好处理,如果碰到Blob, Text等类型,实现起来就很麻烦了。这是一种更不可取的方案。
一个新的Pageable接口及其实现
很显然,看过上面三种实现方法后,我们对新的分页机制有了一个目标,即:不与具体数据库相关;尽可能做到代码重用;尽可能与原JDBC接口的使用方法保持一致;尽可能高的效率。
首先,我们需要提供一个与java.sql.ResultSet向下兼容的接口,把它命名为Pageable,接口定义如下:
public interface Pageable extends java.sql.ResultSet{
/**返回总页数
*/
int getPageCount();
/**返回当前页的记录条数
*/
int getPageRowsCount();
/**返回分页大小
*/
int getPageSize();
/**转到指定页
*/
void gotoPage(int page) ;
/**设置分页大小
*/
void setPageSize(int pageSize);
/**返回总记录行数
*/
int getRowsCount();
/**
* 转到当前页的第一条记录
* @exception java.sql.SQLException 异常说明。
*/
void pageFirst() throws java.sql.SQLException;
/**
* 转到当前页的最后一条记录
* @exception java.sql.SQLException 异常说明。
*/
void pageLast() throws java.sql.SQLException;
/**返回当前页号
*/
int getCurPage();
}
这是一个对java.sql.ResultSet进行了扩展的接口,主要是增加了对分页的支持,如设置分页大小,跳转到某一页,返回总页数等等。
接着,我们需要实现这个接口,由于这个接口继承自ResultSet,并且它的大部分功能也都和ResultSet原有功能相同,所以这里使用了一个简单的Decorator模式。
PageableResultSet2的类声明和成员声明如下:
public class PageableResultSet2 implements Pageable {
protected java.sql.ResultSet rs=null;
protected int rowsCount;
protected int pageSize;
protected int curPage;
protected String command = "";
}
可以看到,在PageableResultSet2中,包含了一个ResultSet的实例(这个实例只是实现了ResultSet接口,事实上它是由各个数据库厂商分别实现的),并且把所有由ResultSet继承来的方法都直接转发给该实例来处理。
PageableResultSet2中继承自ResultSet的主要方法:
//……
public boolean next() throws SQLException {
return rs.next();
}
//……
public String getString(String columnName) throws SQLException {
try {
return rs.getString(columnName);
}
catch (SQLException e) {//这里是为了增加一些出错信息的内容便于调试
throw new SQLException (e.toString()+" columnName="
+columnName+" SQL="+this.getCommand());
}
}
//……
只有在Pageable接口中新增的方法才需要自己的写方法处理。
/**方法注释可参考Pageable.java
*/
public int getCurPage() {
return curPage;
}
public int getPageCount() {
if(rowsCount==0) return 0;
if(pageSize==0) return 1;
//calculate PageCount
double tmpD=(double)rowsCount/pageSize;
int tmpI=(int)tmpD;
if(tmpD>tmpI) tmpI++;
return tmpI;
}
public int getPageRowsCount() {
if(pageSize==0) return rowsCount;
if(getRowsCount()==0) return 0;
if(curPage!=getPageCount()) return pageSize;
return rowsCount-(getPageCount()-1)*pageSize;
}
public int getPageSize() {
return pageSize;
}
public int getRowsCount() {
return rowsCount;
}
public void gotoPage(int page) {
if (rs == null)
return;
if (page < 1)
page = 1;
if (page > getPageCount())
page = getPageCount();
int row = (page - 1) * pageSize + 1;
try {
rs.absolute(row);
curPage = page;
}
catch (java.sql.SQLException e) {
}
}
public void pageFirst() throws java.sql.SQLException {
int row=(curPage-1)*pageSize+1;
rs.absolute(row);
}
public void pageLast() throws java.sql.SQLException {
int row=(curPage-1)*pageSize+getPageRowsCount();
rs.absolute(row);
}
public void setPageSize(int pageSize) {
if(pageSize>=0){
this.pageSize=pageSize;
curPage=1;
}
}
PageableResultSet2的构造方法:
public PageableResultSet2(java.sql.ResultSet rs) throws java.sql.SQLException {
if(rs==null) throw new SQLException("given ResultSet is NULL","user");
rs.last();
rowsCount=rs.getRow();
rs.beforeFirst();
this.rs=rs;
}
这里只是简单的取得一个总记录数,并将记录游标移回初始位置(before first),同时将参数中的ResultSet赋给成员变量。
Pageable的使用方法
因为Pageable接口继承自ResultSet,所以在使用方法上与ResultSet一致,尤其是在不需要分页功能的时候,可以直接当成ResultSet使用。而在需要分页时,只需要简单的setPageSize, gotoPage,即可。
PreparedStatement pstmt=null;
Pageable rs=null;
……//构造SQL,并准备一个pstmt.
rs=new PageableResultSet2(pstmt.executeQuery());//构造一个Pageable
rs.setPageSize(20);//每页20个记录
rs.gotoPage(2);//跳转到第2页
for(int i=0; i<rs.getPageRowsCount(); i++){//循环处理
int id=rs.getInt(“ID”);
……//继续处理
}
总结
一个好的基础类应该是便于使用,并且具备足够的可移植性,同时要保证其功能的完善。在上面的实现中,我们从java.sql.ResultSet接口继承出Pageable,并实现了它。这就保证了在使用中与JDBC原有操作的一致性,同时对原有功能没有缩减。
同时它也是易于使用的,因为封装了一切必要的操作,所以在你的代码中唯一显得"难看"和"不舒服"的地方就是需要自己去构造一个PageableResultSet2。不过只要你愿意,这也是可以解决的。
当然它也有具有充分的可移植性,当你将数据库由Oracle变为Mysql或者SQLServer的时候,你仍然可以使用这些分页的代码。它在使用中(或者说在移植的过程中)唯一的限制就是你必须要使用一个支持JDBC2的驱动(现在明白为什么我把类命名为PageableResultSet2了吧。:P),不过,好在JDBC2已经成为标准了,绝大多数的数据库(如Oracle, Mysql, SQLServer)都有自己的或者第三方提供的JDBC2的驱动。
OK,这个分页的实现是否对你的编程有帮助呢?仔细看看,其实真正自己写的代码并不多的,大部分都只是简单的转发操作。一个合适的模式应用可以帮你很大忙。
㈡ word分页符使用方法技巧
其实,在Word的分隔符中,还有分节符和分栏符。下面,我们就来看看它们的用途。 1.分节符 先单击“插入”菜单下的“分隔符”命令,系统会弹出一个分隔符对话框,从对话框中,我们可以对分节符进行四种设置:下一页、连续、偶数页、奇数页。 “下一页”表示当前光标所在位置以下的全部内容移到下一页面上,它和你直接选中分页符而不选择“分节符”下的任何选项效果一样。 “连续”表示当前光标所在位置以后的内容将按新的一页设置进行重排,但其不转到下一页,而是直接从上一页的空白处开始。这项功能在采用单栏方式排版时和分段符作用一样,但如果采用多栏排版,那么用此选项可以保证分页符前后两部分的内容按多栏方式正确排版。 如果选中“奇数页/偶数页”,则当前光标所在位置以后的内容将会转移到下一个奇数页/偶数页上,如果当前页为奇数页/偶数页,则Word会自动在两个奇数页/偶数页之间空出一页。 2.分栏符 分栏符同样也有四个选项。如果希望在不同的页选用不同的分栏进行排版,则在单击“分栏符”后再选择“下一页”;如果要在同一页的不同位置设置不同的栏数,那么应再选择“连续”,然后打开“格式”菜单单击“分栏”命令选定栏数即可。我们可以在一页中将标题设为一栏,将其下的正文文字设置为两栏。同样,“偶数页/奇数页”的设置分别表示此种分栏设置将在偶数页/奇数页中生效。注意,如果直接选择“分栏符”选项,则在多栏情况下,可以强行中止其中一栏,将文章内容转到下一栏的开始继续排版。 3.分页符想把标题放在页首处或是将表格完整地放在一页上,敲回车,加几个空行的方法虽然可行,但这样做,在调整前面的内容时,只要有行数的变化,原来的排版就全变了,还需要再把整个文档调整一次。其实,只要在分页的地方插入一个分页符就可以了。 在Word中输入文本时,Word会按照页面设置中的参数使文字填满一行时自动换行,填满一页后自动分页,这叫做自动分页,而分页符则可以使文档从插入 分页符的位置强制分页。 若要把两段分开在两页显示时,把光标定位到第一段的后面,打开 “插入”菜单,单击“分隔符”命令,打开“分隔符”对话框,选择“分页符”,单击“确定”按钮,在这里就插入了一个分页符,这两段就分在两页显示了。 要是又不想把这些内容分页显示,把插入的分页符删除就可以了。默认的情况下分页符是不显示的,单击“常用”工具栏上的“显示/隐藏编辑标记”按钮,在插入分页符的地方就出现了一个分页符标记,用鼠标在这一行上单击,光标就定位到了分页符的前面,按一下Delete键,分页符就被删除了。 其实分页符就是一个比较特殊的字符,可以选取、移动、复制和粘贴。不过一般很少这么用,因为插入分页符有一个很方便的快捷键:Ctrl+回车。分页符插入以后会自动占据一行,可以很方便地找到。4. 使用换行符 分页符只是分隔符的一种,这个和分段有一些区别:拿这个标题来说,通常为了排版的需要会给标题设置一个比较大的段后间距,如果不使用换行符,而把这个标题分成两段的话,就要重新设置段落的格式,而换行符则只是把东西放到了另外的一行中,并没有分段,行与行之间还是只有行距在起作用,这样就不用再设置段落格式了。换行符主要是在那种要换行但又不想分段的地方使用。换行符的插入:打开 “插入”菜单,单击“分隔符”命令,打开“分隔符”对话框,选择“换行符”,单击“确定”按钮,就在光标所在的地方插入了一个换行符。5. 使用分节符分节符的使用:有时候会在文档的不同部分使用不同的页面设置,若希望将一部分内容变成分栏格式的排版,可以选择这些部分的内容,使用分栏的方法来将它们分栏,但也可以用插入分节符的方法来实现,将光标定位到这些内容的前面,打开“插入”菜单,单击“分隔符”命令,打开“分隔符”对话框,选择“分节符类型(连续)”,单击“确定”按钮,在这里插入一个连续的分节符,在后面也插入一个连续的分节符,将光标定位在引文中,打开“格式”菜单,单击“分栏”命令,打开“分栏”对话框,选择“两栏”,将“应用范围”选择为“本节”,单击“确定”按钮,现在这篇文档就按我们的要求排版了。 实际上前面说的许多操作都可以用分节的方式来设置作用区域的,如页面边框、页面的边距设置、纸张、纸型、版式等等。 三种分隔符的区别(在普通视图中可见): 1.分页符:是插入文档中的表明一页结束而另一页开始的格式符号。“自动分页”和“手动分页”的区别是一条贯穿页面的虚线上有无“分页符”字样(后者有); 2.分节符:为在一节中设置相对独立的格式页插入的标记。 ①下一页:光标当前位置后的全部内容移到下一页面上; ②连续:光标当前位置以后的内容将新的设置安排,但其内容不转到下一页,而是从当前空白处开始。单栏文档同分段符;多栏文档,可保证分节符前后两部分的内容按多栏方式正确排版; ③偶数页/奇数页:光标当前位置以后的内容将会转换到下一个偶数页/奇数页上,Word会自动在偶数页/奇数页之间空出一页。 3.分栏符:分栏是一种文档的页面格式,将文字分栏排列。
㈢ php 分页类怎么用啊
<?php
classPage{
private$total_rows;//数据库总条数
private$per_page_rows;//每页显示条数
private$limit;
private$uri;
private$total_pages;//总页数
private$config=array("header"=>"记录条数","prev"=>"上一页","next"=>"下一页","first"=>"首页","last"=>"尾页");
private$list_length=8;
publicfunction__construct($total_rows,$per_page_rows=10,$url_args){
$this->total_rows=$total_rows;
$this->per_page_rows=$per_page_rows;
$this->uri=$this->get_uri($url_args);
$this->page=!empty($_GET['page'])?$_GET['page']:1;
$this->total_pages=ceil($this->total_rows/$this->per_page_rows);
$this->limit=$this->set_limit();
}
privatefunctionset_limit(){
return"limit".($this->page-1)*$this->per_page_rows.",{$this->per_page_rows}";
}
privatefunctionget_uri($url_args){
$url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],"?")?"":"?").$url_args;
$parse=parse_url($url);
if(isset($parse['query'])){
parse_str($parse['query'],$params);//把url字符串解析为数组
unset($params['page']);//删除数组下标为page的值
$url=$parse['path'].'?'.http_build_query($params);//再次构建url
}
return$url;
}
publicfunction__get($args){
if($args=="limit"){
return$this->limit;
}else{
returnnull;
}
}
privatefunctionstart_page(){
if($this->total_rows==0){
return0;
}else{
return(($this->page-1)*$this->per_page_rows)+1;
}
}
privatefunctionend_page(){
returnmin($this->page*$this->per_page_rows,$this->total_rows);
}
privatefunctiongo_first(){
$html="";
if($this->page==1){
$html.=" {$this->config['first']} ";
}else{
$html.=" <ahref='{$this->uri}&page=1'>{$this->config['first']}</a> ";
}
return$html;
}
privatefunctiongo_prev(){
$html="";
if($this->page==1){
$html.=" {$this->config['prev']} ";
}else{
$html.=" <ahref='{$this->uri}&page={$this->page}-1'>{$this->config['prev']}</a> ";
}
return$html;
}
privatefunctiongo_next(){
$html="";
if($this->page==$this->total_pages){
$html.=" {$this->config['next']} ";
}else{
$html.=" <ahref='{$this->uri}&page={$this->page}+1'>{$this->config['next']}</a> ";
}
return$html;
}
privatefunctiongo_last(){
$html="";
if($this->page==$this->total_pages){
$html.=" {$this->config['last']} ";
}else{
$html.=" <ahref='{$this->uri}&page={$this->total_pages}'>{$this->config['last']}</a> ";
}
return$html;
}
privatefunctiongo_page(){
return' <inputtype="text"onkeydown="javascript:if(event.keyCode==13){varpage=(this.value>'.$this->total_pages.')?'.$this->total_pages.':this.value;location=''.$this->uri.'&page='+page+''}"value="'.$this->page.'"style="width:25px;"/><inputtype="button"onclick="javascript:varpage=(this.previousSibling.value>'.$this->total_pages.')?'.$this->total_pages.':this.previousSibling.value;location=''.$this->uri.'&page='+page+''"value="GO"/> ';
}
privatefunctionpage_list(){
$link_page="";
$i_num=floor($this->list_length/2);
for($i=$i_num;$i>=1;$i--){
$page=$this->page-$i;
if($page<1){
continue;
}else{
$link_page.=" <ahref='{$this->uri}&page={$page}'>{$page}</a> ";
}
}
$link_page.=" {$this->page} ";
for($i=1;$i<$i_num;$i++){
$page=$this->page+$i;
if($page<=$this->total_pages){
$link_page.=" <ahref='{$this->uri}&page={$page}'>{$page}</a> ";
}else{
break;
}
}
return$link_page;
}
publicfunctionout_page($display=array(0,1,2,3,4,5,6,7,8)){
$display_html='';
$html[0]=" 共有<b>{$this->total_rows}</b>{$this->config['header']} ";
$html[1]=" 每页显示<b>".($this->end_page()-$this->start_page()+1)."</b>条,本页显示从<b>{$this->start_page()}</b>--<b>{$this->end_page()}</b>{$this->config['header']} ";
$html[2]=" <b>{$this->page}</b>/<b>{$this->total_pages}</b>页 ";
$html[3]=$this->go_first();
$html[4]=$this->go_prev();
$html[5]=$this->page_list();
$html[6]=$this->go_next();
$html[7]=$this->go_last();
$html[8]=$this->go_page();
foreach($displayas$index){
$display_html.=$html[$index];
}
return$display_html;
}
}
?>
㈣ java分页工具类怎么用
下面是我的代码:
PageUtil.java
1 package util;
2
3 import java.util.Map;
4
5 /**
6 * 分页工具类
7 * @author lyh
8 *
9 */
10 public class PageUtil {
11 private int total; //总数
12 private int element; //每夜显示数
13 private String url; //访问的url
14 private Map<String,Object> keys; //记忆参数
15 private int p; //当前页数
16 private int page; //总页数
17
18 /**
19 * 构造传参数
20 * @param total
21 * @param element
22 * @param url
23 * @param keys
24 * @param p
25 */
26 public PageUtil(int total,int element,String url,Map<String,Object> keys,int p){
27 this.total = total;
28 this.element = element;
29 this.url = url;
30 this.keys = keys;
31 this.p = p;
32 if(this.total != 0 && this.total%this.element == 0){
33 this.page = this.total/this.element;
34 }else{
35 this.page = this.total/this.element+1;
36 }
37 }
38
39 /**
40 * 拼接分页访问的url
41 * @param p
42 * @param keys
43 * @return 拼接好的带参数url
44 */
45 private String createFullUrl(int p,Map<String,Object> keys){
46 StringBuffer buf = new StringBuffer(this.url);
47 buf.append("?p="+p);
48
㈤ word 分页符的使用方法
WORD排版中字符的定位
微软的WORD作为办公软件,在排版上的功能是非常强大的,同时它的使用方法也是极为灵活的,要用好这个舶来品,做到洋为中用,就必须充分了解它的特性,以及同已往所用的文字编辑软件(如:WPS、CCED等)的区别。否则,面对WORD如此浩繁的功能,不仅不能充分发挥出它的特长,反而会感到无所适从。
文字与字符的定位,是文字编辑中首要解决的问题,下面分“文字与字符的横向定位”、“字符的垂直定位”、“字符跳页的定位”和“表格中字符的定位”四个方面,来谈谈自己粗浅的体会。
一、文字与字符的横向定位
在已往的文字编辑软件中,字符的水平横向定位,主要是靠加入空格来实现的,只是水平居中时,才有在行首加入行居中符号这样的控制。这时若增减排版后的文字字符数量,以及改变字体大小时,常常需要重新进行调整,来达到定位字符的目的。而在WORD中,缺省的是设置字体的不等宽处理,遇有避头尾字符时,还要压缩标点符号的宽度,这样字符间加入的空格往往就不等宽了。所以在WORD中,采用加入空格的办法来调整字符的位置,是不精确的,也是不方便的。怎么办?您可以综合选用以下几种办法:
1.加入空格定位字符:
加入空格,是传统调整文字字符水平位置的方法,虽然在WORD中不是最佳的办法,但在必要时也可以使用。
2.单行段及多行段的“首行缩进”:
对于只有单行的段落,或多行段落的第一行行首的文字字符要缩进时,可通过【格式】菜单【段落】中设置“首行缩进”来调节此,也可以直接用鼠标在水平标尺左端的上部按住下指箭头直接进行拖动。
3.多行段落第二行以下的缩进:
有着多行段落的第二行以下各行文字字符缩进,可采用【格式】菜单【段落】中设置“悬挂缩进”的办法,也可直接用鼠标拖动水平标尺左端下部的上指箭头。
4.整个段落左右边界缩进:
整个段落左右边界的缩进可通过【格式】菜单【段落】中缩进“左”、“右”边界来设置。用鼠标操作是直接点住水平标尺左端下部上指箭头下方的小方块和标尺右端的上指箭头进行拖动,来设置“左缩进”和“右缩进”的。
5.行中间隔字符的制表符定位:
遇有行中要设置一段间隔,而多段中该位置文字字符又需要进行垂直对齐时,可在要加入间隔的位置插入一“制表符”(按Tab键),然后在【格式】菜单【段落】的【制表位】中设置制表位的位置,或直接在水平与垂直标尺的交叉点上反复按下鼠标左键,从相继出现的五种制表符类型“左对齐制表符”、“居中制表符”、“右对齐制表符”、“小数点对齐制表符”和“竖线制表符”中选择所需的制表符定位方式后,直接在水平标尺中点定并拖动制表位到所需位置。
6.“无线表格”的水平定位:
所谓“无线表格”,就是不划出表格线的表格。利用“无线表格”进行定位是在页面上要插入文字的地方插入一张表格,但该表格不划出表格的边框线及内框线,通过调节表格单元格的宽度及位置来精确定位文字。这是一种非常有效的定位字符的方法,微软在WORD的模板中就大量使用这种方法。
二、字符的垂直定位
WORD中文字的垂直定位,除仍可用已往的方法外,它也有其自己特殊的方法:
1.加入空行(回车)来调整字符的垂直位置:
加入空行(回车)是最简便的调整文字字符垂直位置的办法,已往的编辑软件使用它,WORD中也可以这样用。它适合于较大的垂直间隔的调整。
2.“行距”调整:
“行距”的调整也是过去的编辑软件常用来调整字符垂直间隔的方法,只不过它既可以调节段落与段落之间的行距,也可以用来调节段落中文字的行间距。
3.设置“段前空”与“段后空”:
在已往的编辑软件中,段与段之间的间隔是由行间距来决定的,若某一段要与其它段落保持较大的间隔(如文章的标题、署名等),可使用插入空行的办法,而若某段要与其它段保持略大的间距(不足一空行,如文章中的章节小标题),则需单独给这一段前设置特殊的行距,段后再重新改回正文的行间距。假如文章中这样的情况较多,就需反复变换行间距,而一旦文章全部排版后又需重新调整全文的行距时,反复修改多处的行间距不仅工作量大,而且容易造成疏漏。
Word则不同,它引入了“段前空”和“段后空”的概念。在此“段前空”与“段后空”就是指段落前后的特别附加间隔。在Word所编排的文稿中,段与段的间隔,是由前一段的“段后空”加上其间“行距”,再加上后一段的“段前空”组成。根据这一点,前面所提到的问题则可通过增加章节小标题行的“段前空”和“段后空”(在【格式】菜单【段落】项中设置),来增加该段行间距的特别附加增量。这样在全文排好后,即使选定全文(Ctrl+A)进行统一修改行距时,章节小标题段也始终保持比正文行距多出一差值来。
4.“无线表格”的垂直定位:
用“无线表格”来垂直定位文字的原理同用无线表的水平定位,在此不再详述。
三、字符跳页的定位
1.加入回车控制分页:
用加入回车来控制分页,这种办法虽然可行,但其弊端是当分页前段落需要加减行时,就要删除或添加后面的硬回车符,所以WORD中也不提倡使用。
2.加入分页符的强行分页:
这种办法就是在要分页的地方插入分页符(用【插入】菜单【分隔符】中插入“分页符”,或直接按Ctrl+回车)。这个老办法WORD也仍可以采用。
3.设置“与下段同页”及“段前分页”
“与下段同页”及“段前分页”是在【格式】菜单【段落】【换行与分页】选项卡中设置的,它是WORD特有的两项功能。“段前分页”是指在段的前面插入分页符,与前面在段后加入分页符的位置正好相反,它适合于分页前段落需要修改的情况,以及“主控文档”中的插入文档前。而“与下段同页”则是为了保持该段始终与下一段落处在同一页上,如段落前的小标题,表格前的题目等情况,它表示如果下一段落不能完整地提前到前一页,则当前段也放弃在当前页的位置,与下一段一起移到下页。
四、表格中字符的定位
WORD对于表格单元中的文字,不仅可以与正常文字段落采取同样的处理方法,而且还有着其特有的处理手段。
1.表格中文字的垂直居中:
从WORD7.0起就增加了表格中单元格的“垂直居中”功能,这就不需要再象6.0以前那样,通过改变“段前空”和“行距”来调整文字在表格中的垂直位置了。
2.行距与单元格高度的综合调整:
已往的编辑软件中表格间隔的调整仅与字体大小和行距有关,而在Word中两行间的距离是由行距与单元格高度两个参数共同决定的,所以调节的时候就要综合地调整这两个数值。当“行高度”选择“自动设置”时,表格行间的距离是由字体的大小和段落行距决定的。当表格中文字选择“最小值”行距值时,表格行高的“最小值”即使再小,其表格的行高也不可能再缩小了,所以要划出紧密的表格时,应选择“固定行距”值和“精确设置”的行高度。
㈥ 这个php分页类怎么用
介绍下我编写的分页
<?
$conn = mysql_connect ("localhost","root","")||die("无法连接数据库");
mysql_select_db("2009exhi")||die("选择数据库失败");
$filename="分页显示记录.php"; //定义本程序文件名(必须和本文件的名称一样,且包含扩展名)
$tablename="news"; //定义查询的表名
$turn="order by id desc"; //定义查询的排序方式(本例子定义了以id降序查询)
$oncondition="where id>18"; //定义查询条件(本例子定义了以id>18为查询条件)
$execc="select count(*) from ".$tablename." ".$oncondition;
$resultc=mysql_query($execc);
$rsc=mysql_fetch_array($resultc);
$num=$rsc[0]; //计算总记录数
$perpage=4; //定义每页显示记录数(自定义)
$totalpage=ceil($num/$perpage); //计算总页数
$page=$_GET['page'];
if($page<0)$page=0;
if($page>=ceil($num/$perpage))$page=ceil($num/$perpage)-1;
$nowpage=$page+1; //计算当前第几页
$exec="select * from ".$tablename." ".$oncondition." ".$turn." limit ".($page*$perpage).",$perpage";
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
//输出部分
echo "id:".$rs->id." "; //显示记录的id
echo "title:".$rs->title."<br>"; //显示记录的title
}
?>
<br>
共有记录:<?=$num?>
每页记录:<?=$perpage?>
共有页数:<?=$totalpage?>
当前页数:<?=$nowpage?>
<br><br>
<a href="<?=$filename?>?page=0">首页</a>
<a href="<?=$filename?>?page=<?=($page-1)?>">上一页</a>
<a href="<?=$filename?>?page=<?=($page+1)?>">下一页</a>
<a href="<?=$filename?>?page=<?=ceil($num/$perpage)-1?>">尾页</a>
<form name="form1" method="get" action="<?=$filename?>">
转到<input name="page" type="text" size="3" id="jumppage">页<input type="submit" name="Submit" value="go" onclick="jumppage.value=(jumppage.value)*1-1">
</form>
㈦ java分页类实现
这个很简单啊,如果总记录数除以每页的记录数正好除尽的话,那么最大页数就是总记录数除以每页的记录数,否则就是总记录数除以每页的记录数+1咯,例如总记录数为100条,每页是20条,那么分为5页(100/20),如果总记录数为101条,那么应该分为(101/20+1)也就是6页,有问题吗
㈧ 如何使用Bootstrap实现分页及翻页Bootstrap实现分页的类有哪些
分页(Pagination)
下表列出了 Bootstrap 提供的处理分页的 class。
下面的实例演示了上表中所讨论的 class .pagination 的用法:默认的分页
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 默认的分页</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pagination">
<li><a href="#">«</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul>
</body>
</html>
结果如下所示:
分页的状态
下面的实例演示了上表中所讨论的 class .disabled、.active 的用法:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 分页的状态</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pagination">
<li><a href="#">«</a></li>
<li class="active"><a href="#">1</a></li>
<li class="disabled"><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul>
</body>
</html>
结果如下所示:
分页的大小
下面的实例演示了上表中所讨论的 class .pagination-* 的用法:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 分页的大小</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pagination pagination-lg">
<li><a href="#">«</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul><br>
<ul class="pagination">
<li><a href="#">«</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul><br>
<ul class="pagination pagination-sm">
<li><a href="#">«</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">»</a></li>
</ul>
</body>
</html>
结果如下所示:
翻页(Pager)
如果您想要创建一个简单的分页链接为用户提供导航,可通过翻页来实现。与分页链接一样,翻页也是无序列表。默认情况下,链接是居中显示。下表列出了 Bootstrap 处理翻页的 class。
默认的翻页
下面的实例演示了上表中所讨论的 class .pager 的用法:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 默认的翻页</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pager">
<li><a href="#">Previous</a></li>
<li><a href="#">Next</a></li>
</ul>
</body>
</html>
结果如下所示:
对齐的链接
下面的实例演示了上表中所讨论的 class .previous、.next 的用法:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 翻页中对齐的链接</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pager">
<li class="previous"><a href="#">← Older</a></li>
<li class="next"><a href="#">Newer →</a></li>
</ul>
</body>
</html>
结果如下所示:
翻页的状态
下面的实例演示了上表中所讨论的 class .disabled 的用法:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例 - 翻页的状态</title>
<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="/scripts/jquery.min.js"></script>
<script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<ul class="pager">
<li class="previous disabled"><a href="#">← Older</a></li>
<li class="next"><a href="#">Newer →</a></li>
</ul>
</body>
</html>
㈨ ThinkPHP使用心得分享-分页类Page的用法
ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page类:
复制代码
代码如下:
import('ORG.Util.Page');
//Page类的引入
$db
=
M('abc');//实例化数据表abc
$where
=
array(
'id'=>'2';
);//条件语句$where,例表中字段id的值为2
$count
=
$db->where($where)->count();//获取符合条件的数据总数count
$page
=
new
Page($count,
10);//实例化page类,传入数据总数和每页显示10条内容
$limit
=
$page->firstRow
.
','
.
$page->listRows;//每页的数据数和内容$limit
$result
=$db->where($where))->limit($limit)->select();//分页查询结果
$this->result
=
$result;//赋值
$this->show
=
$page->show();//获取分页的底部信息
以上代码是分页类实现的基本语句,当然喜欢使用原生sql语句的朋友也可以配合原生sql语句实现查询分页:
复制代码
代码如下:
import('ORG.Util.Page');
//Page类的引入
$db
=
M('abc');//实例化数据表abc
$where
=
array(
'id'=>'2';
);//条件语句$where,例表中字段id的值为2
$count
=
$db->where($where)->count();//获取符合条件的数据总数count
$page
=
new
Page($count,
10);//实例化page类,传入数据总数和每页显示10条内容
$Modle
=
new
Model();//实例化新数据模型
$sql
=
'select
id,name
from
abc
where
'.$where.'
limit
'.$page->firstRow.','.$page->listRows;//sql语句
$result
=
$Modle->query($sql);//执行sql语句
$this->result
=
$result
$this->show=$page->show();
当然,分布查询获取的内容也可以先对查询完的数据进行处理再赋值,比如
复制代码
代码如下:
...
$result
=$db->where($where))->limit($limit)->select();//分页查询结果
$res
=
abc($result);//abc方法(自定义方法或php函数)对结果$result进行数据排序或重组处理等
$this->result
=
$res;//赋值