shrimp32(一心) 我想要视图分页显示得源码,谢谢

salusun 2003-01-13 07:52:13
我给100分。谢谢你
...全文
27 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
discussant 2003-02-12
  • 打赏
  • 举报
回复
是不是有这个问题呀!关注
ny_he 2003-02-11
  • 打赏
  • 举报
回复
pqxy(BT皮球) :
可是@column的返回值是有大小限制的啊。要是不能全部返回的话,其后所有岂不是没意义了。
pqxy 2003-02-11
  • 打赏
  • 举报
回复
那有那么麻烦,代理来代理去的,服务器还不得拉崩了?~~嘿嘿
两个公式就搞定了~~:)

共几页:
Temp:=@DbColumn("":"NoCache";"":"oa_fileflow.nsf";"WatchFile";1);
recordcount:=@Elements(Temp);
pagecount:=10; (注:看你每页显示多少行,这就暂且显示10行吧)
@Integer((RecordCount-1)/PageCount)+1

第几页:
Temp:=@RightBack(QUERY_STRING; "&Start=");
Temp2:=@If(@LeftBack(Temp; "&")!="";@LeftBack(Temp; "&");Temp);
Temp1:=@If(Temp2="";Temp2;"1");
Tmp:=@Integer((@TextToNumber(Temp1)+PageCount-2)/PageCount)+1;
@If(Show_Num=1;1;Tmp)

你还可以把recordcount和pagecount做成域,让用户自己选每页显示多少行~~~
zhangluoH 2003-02-09
  • 打赏
  • 举报
回复
强烈关注!
kingwgh 2003-02-08
  • 打赏
  • 举报
回复
也给你一点思路:
可以直接用代理来操作视图中的文档然后再显示出来:
你写一个代理,然后在嵌入视图的表单的WEBQUERYOPEN中运行代理:
REM 实现视图显示分页
Dim s As New NotesSession
Dim doc As NotesDocument
Set doc=s.DocumentContext

Dim db As NotesDatabase
Set db=s.CurrentDatabase

Dim view As NotesView

Set view=db.GetView(doc.v_view(0))'视图名称
Dim ll_count As Long

If view Is Nothing Then
Msgbox "view is Nothing!"
Goto bz
End If

Dim viewdc As NotesViewEntryCollection

If doc.v_keysort(0)<>"" Then
Set viewdc=view.GetAllEntriesBykey(doc.v_keysort(0))
Else
Set viewdc=view.AllEntries
End If

Dim numdoc,rowsperpage As Integer

numdoc=viewdc.count'记录总数

rowsperpage=Val(doc.v_rowsperpage(0))

If (numdoc Mod rowsperpage)=0 Then
doc.v_pagenum=numdoc/rowsperpage
ll_count = numdoc/rowsperpage
Else
doc.v_pagenum=Int(numdoc/rowsperpage)+1
ll_count=Int(numdoc/rowsperpage)+1
End If

Dim start As Variant
start=Evaluate({@middle(query_string;"start=";"&")},doc)

If start(0)<>"" Then
doc.v_currentpage=Int(Val(start(0))/rowsperpage)+1
Else
doc.v_currentpage="1"
start(0)="1"
End If

Dim item As NotesItem
'Set item=doc.GetFirstItem("v_dispage")
Set a = New NotesRichTextItem(doc, "v_dispage")
If Cstr(doc.v_gopage(0))<>"" Then
start(0)=(doc.v_gopage(0)-1)*rowsperpage+1
End If
Call a.AppendText("[<table width = 100%>]")
Call a.AppendText("[<tr>]")
Call a.AppendText("[<td align = left>]")
Call a.AppendText("[<font size = 2>]")
Call a.AppendText("[<font size = 2 color = red>]记录总数:"+Cstr(numdoc)+"[</font>] 页数:")

For i=Int(Val(start(0))/rowsperpage)-4 To Int(Val(start(0))/rowsperpage)+4
If i>=0 Then
If i>=doc.v_pagenum(0) Then
Exit For
End If
If i=Int(Val(start(0))/rowsperpage) Then
Call a.AppendText("[[<font size = 3 color=red>]"+Cstr(i+1)+"[</font>]]")
Else
Call a.AppendText("[[<a href="+doc.form(0)+"?openform&start="+Cstr((i)*rowsperpage+1)+"&count="+Cstr(rowsperpage)+">"+Cstr(i+1)+"</a>]]")
End If
End If
Next
Call a.AppendText("[</font>]")
Call a.AppendText("[</td>]")
Call a.AppendText("[</tr>]")
Call a.AppendText("[</table>]")
bz:
Print {<body onload=window.navigate("}+doc.form(0)+{?openform&start=}+start(0)+{&count=}+Cstr(rowsperpage)+{")>}
Print {</body>}

在表单位中放一些域:

视图名称:v_view
分类列:v_keysort,也可以不用
每页显示记录:v_rowsperpage
总页数:v_pagenum
当前页:v_currentpage
跳转到 v_gopage 页,该域也没有用到
表单位名称:form
RTF域:v_dispage ,计算.

cai_yb 2003-02-08
  • 打赏
  • 举报
回复
up
shuiye 2003-01-14
  • 打赏
  • 举报
回复
拷过来给你们做个参考

类似本坛视图分页的实现原理(附公式和代理)

表单要“产生所有域的HTML”,因为有隐藏域值要用;两个可编辑隐藏域totalpages,query_string(前者代理中要进行存取,后者保存url参数)两个计算域total,dpage(总页数,第几页);一个可编辑域gopage(到第几页);
两个代理,gotopage和viewpage,前者直接实现转到第几页;后者实现共几页,第几页;翻页操作时向url传递start=?参数,代理来计算是第几页。

几个操作公式
下一页 s:=@If(@Trim(@Right(query_string;"start="))="";"1";@Trim(@Right(query_str ing;"start=")));
p:=@TextToNumber(s);
start:=@If((p+20)>(@TextToNumber(totalpages)*20);s;@Text(p+20));
url:= @Subset(@DbName;-1)+"/$$viewtemplate+for+($inbox)?openform&start="+start;
@URLOpen(url)
上一页 s:=@If(@Trim(@Right(query_string;"start="))="";"1";@Trim(@Right(query_str ing;"start=")));
p:=@TextToNumber(s);
s2:=@If(p<=20;1;p-20);
start:=@Text(s2);
url:= @Subset(@DbName;-1)+"/$$viewtemplate+for+($inbox)?openform&start="+start;
@URLOpen(url)
首页 REM "@Command([OpenView];@ViewTitle)";
@URLOpen("$$viewtemplate+for+($inbox)?openform&start=1") < /TR>
末页 end:=@Text((@TextToNumber(totalpages)-1)*20+1);
url:= @Subset(@DbName;-1)+"/$$viewtemplate+for+($inbox)?openform&start="+end;
@URLOpen(url)

gotopage代理如下:

Sub Initialize
On Error Goto errorhandler

Dim session As New notessession
Set db=session.currentdatabase
Set doc=session.documentcontext
'///////////////////////////////////
&nb sp;If doc.gopage(0)="0" Then

Print "<script language=javascript> window.alert('请输入正确的页码!') </script>"
Print "<script language=javascript> window.history.back()</script>"
Exit Sub
End If
'//////////////////////////////////
If Cint(doc.gopage(0))>Cint(doc.totalpages(0)) Then

Print "<script language=javascript> window.alert('输入超过最大页码!')</script>"
Print "<script language=javascript> window.history.back()</script>"
Exit Sub
End If

'///////////////////////////////////
path=db.file path
dp=Cint(doc.gopage(0))
dp=Cstr((dp-1)*20+1)
Prin t "["+path+"/$$viewtemplate+for+($inbox)?openform&start="+dp+"]"

Exit Sub

errorhandler:

Messagebox "代理运行发生错误!!" &Str(Err)&":"&Error$
Exit Sub



viewpage代理用来计算总页数,第几页
zhangrui007008 2003-01-13
  • 打赏
  • 举报
回复
偶也想要一份分页显示源码,请顺便给我发一份吧,谢谢,我的信箱是zhang_rui_007@sina.com
salusun 2003-01-13
  • 打赏
  • 举报
回复
我的信箱是suntyneu@263.net

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧