日期:2014-05-19  浏览次数:20398 次

有谁做过打印换页,请教教我!!!!!!!!!HELP ME
以下是我写的打印换页代码,大家看一下,是不是有问题

///   <summary>
///   行数计算
///   </summary>
///   <param   name= "text "> </param>
///   <returns> </returns>
private   int   GetLines(string   text)
{
int   linebytes=41;//   行的字节数(2个字节以个汉字)
int   lines=1;
int   pos1=0;//行里第1个索引位置
int   pos2=0;//行里第2个索引位置
text=text.Replace( "&nbsp; ", "   ").Replace( "&nbsp ", "   ");
pos2=text.IndexOf( " <br> ");//返回第2行到最后的字符数
mk=lines.ToString();
while   (pos2> =0)//判断行里到底有几个 <br>
{
lines++;//有以个就要多+1行
if   (pos2-pos1> linebytes)     lines+=(pos2-pos1)/linebytes;//第2个 <br> 的索引位置-第1个位置大于字节数
mk+= ", "+lines.ToString()+ "( "+pos1.ToString()+ ", "+pos2.ToString()+ ") ";
pos1=pos2;//把第2个索引位置赋给第1个索引位置
pos2=text.IndexOf( " <br> ",pos1+1);//第2个索引位置去获得下一个 <br> 的索引位置
}
pos2=text.Length;
if   (pos2-pos1> linebytes)     lines+=(pos2-pos1)/linebytes;
lines++;
mk+= ", "+lines.ToString()+ "( "+pos1.ToString()+ ", "+pos2.ToString()+ ") ";
return   lines;
}
///   <summary>
///   打印换页
///   </summary>
///   <param   name= "tr "> </param>
///   <param   name= "pos "> </param>
///   <param   name= "text "> </param>
///   <returns> </returns>
private   int   PageBreak(System.Web.UI.WebControls.TableRow   tr,int   pos,string   text)
{
int   pagelines=71;//页面总行数
int   i=GetLines(text);//i表示1行里的数据是多少行
if   (pos+i> =pagelines)//当前打印位置的行数+这次打印行里的数据行数是不是大于等于页面总行数
{
tr.Style.Add( "PAGE-BREAK-AFTER ", "always ");
return   i;//如果大于的话,把当前要打印的行里的数据换到第2页去打印
}
return   pos+i;//如果不是的话,当前打印位置的行数+这次打印行里的数据行数
}

------解决方案--------------------
帮顶
------解决方案--------------------
分页了呀,边框分到下一页了。边框只有一个呀。
------解决方案--------------------
up
------解决方案--------------------
帮顶