<%@LANGUAGE="VBSCRIPT" %>
<%Option Explicit %>
<\!--#include file="../includes/library.asp"-->
<\!--#include file="../includes/runtime.asp"-->
<\!--#include file="../Manager/char.asp"-->
<\%=lan_getText(session("userLanguage"),0)%>
<script>
function selectAll(obj)
{
var top=obj;
while(true)
{
var top=top.parentElement;
if(top==null)
{
break;
}
if(top=="undefined")
{
top=null;
break;
}
if(top.tagName=="TABLE")
{
break;
}
}
var i;
var j;
if(top!=null)
{
for(i=0;i<top.rows.length;i++)
{
for(j=0;j<top.rows[i].cells[0].children.length;j++)
{
var temp=top.rows[i].cells[0].children[j];
if(temp.tagName=="INPUT")
{
if(temp.type=="checkbox")
{
temp.checked=obj.checked;
}
}
}
}
}
}
</script>
<%
Dim nbdg, errLog
Set nbdg = new NewsBriefDataGrid
Dim pageStringTemplate, pageStringTemplate0, pageStringTemplatePrevious0, pageStringTemplateNext0, pageStringTemplatePrevious1, pageStringTemplateNext1
pageStringTemplate = "<table width=""100%""><tr><td width=""80%"">{0}</td><td>{1}</td></tr></table>"
pageStringTemplate0 = "合计<font color=""red"">{RowCount}</font>条记录第<font color=""red"">{CurrentPage}</font>页/合计<font color=""red"">{PageCount}</font>页"
pageStringTemplatePrevious0 = "上一页 "
pageStringTemplateNext0 = "下一页 "
pageStringTemplatePrevious1 = "<a href=""?page={Previous}"">上一页</a> "
pageStringTemplateNext1 = "<a href=""?page={Next}"">下一页</a> "
nbdg.listNewsBriefs Response, pageStringTemplate, pageStringTemplate0, pageStringTemplatePrevious0, pageStringTemplateNext0, pageStringTemplatePrevious1, pageStringTemplateNext1, "page", -1, session("userLanguage"), errLog
%>
<%
Class NewsBriefDataGrid
'@param Res Response
'@param newsType 新闻类型
'@param languageId
'@errLog
Public Function listNewsBriefs(Res, pageStringTemplate, pageStringTemplate0, pageStringTemplatePrevious0, pageStringTemplateNext0, pageStringTemplatePrevious1, pageStringTemplateNext1, PAGE_PARAM_NAME, newsType, lang, errLog)
Dim ret
Dim currentPage '当前页码,从1开始计数
Dim pageSize '页大小
currentPage = Request.QueryString(PAGE_PARAM_NAME)
If currentPage < 1 Then
currentPage = 1
End if
pageSize = 10
'定义新闻操作句柄
dim objNews
set objNews = Server.CreateObject("SanguineRecore.clsNews")
dim count
objNews.getNewsCount count, -1, "zh_CN", errLog
ret = ret & (page(pageStringTemplate, pageStringTemplate0, pageStringTemplatePrevious0, pageStringTemplateNext0, pageStringTemplatePrevious1, pageStringTemplateNext1, count, pageSize, PAGE_PARAM_NAME, currentPage))
'获取新闻并打印
Dim rows
Dim isOK
'isOK = objNews.getNewsBriefs(CInt(startRow), CInt(pageSize), newsType, rows, "0",errLog)
isOK = objNews.getNewsBriefs ((currentPage - 1) * pageSize, pageSize, newsType, rows, lang, errLog)
'Res.Write(isOK)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 一个使用数据网格的例子
' 下列属性为必选属性
' DataSource 数据源
' RowCount 行数
' ColumnCount 列数
' Columns 列绑定
' HeaderTexts 表头文本
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim dg
'初始化数据网格
set dg = new DataGrid
'设置网格属性
dg.tableAttribute = "cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"""
'设置表格头属性
dg.thAttribute = "bgcolor=""#EEEEEE"" style=""font:normal"""
'设置表行属性
dg.TrAttribute = "onmouseover=""this.style.backgroundColor='#EFEFEF'"" onmouseout=""this.style.backgroundColor='"""
'设置数据源,为一二维数组
dg.DataSource = rows
'设置行数,默认为数据源的行数
If IsArray(rows) Then
dg.RowCount = UBound(rows)
Else
dg.RowCount = 0
End if
'列数,默认为Columns属性的长度
dg.ColumnCount = 6
'设置列绑定
dg.Columns = array( _
"<input type=""checkbox"" name=""id"" value=""{TEXT[0]}"">", _
"{TEXT[0]}", _
"{HTML[2]}", _
"{TEXT[4]}", _
"{TEXT[3]}", _
"<a href=""edit.asp?id={TEXT[0]}"">编辑</a>"_
)
'Response.Write(rows(0)(1))
'设置列宽度
dg.ColumnWidths = array("5%","5%", "20%", "30%", "20%", "")
'设置列文字对齐方式
dg.ColumnAligns = array("center", "center", "center", "center", "center", "center")
'设置表头文字,支持HTML格式
'请把下面的汉字修改成类似:lan_getText(languageId,32)
dg.HeaderTexts = array("<input type=""checkbox"" onclick=""selectAll(this)"">", "ID", "新闻标题", "新闻摘要", "输入时间", "操作")
'设置表头文字对齐属性,默认对齐方式为center
dg.HeaderTextAligns = array("center", "center", "center", "center", "center", "center")
ret = ret & dg.ToTable()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ret = ret & "<input type=""submit"" value=""删除"">"
ret = ret & "</form>"
Res.Write(ret)
''''''''''''''''''''''''''''''
End Function
'
'@param rowCount 总行数
'@param pageSize 每页显示的行数
'@param PAGE_PARAM_NAME page的参数名,用在QueryString中
'@param currentPage 当前页码
'@return 分页字符串
Public Function page(pageStringTemplate, pageStringTemplate0, pageStringTemplatePrevious0, pageStringTemplateNext0, pageStringTemplatePrevious1, pageStringTemplateNext1, rowCount, pageSize, PAGE_PARAM_NAME, currentPage)
rowCount = CInt(rowCount)
pageSize = CInt(pageSize)
currentPage = CInt(currentPage)
Dim ret
Dim pageCount, i, tmp
tmp = rowCount / pageSize
pageCount = Fix(tmp)
If(tmp > pageCount) Then
pageCount = pageCount + 1
End If
Dim p1, p2
p1 = ""
'p1 = p1 & "合计<font color=""red"">" & rowCount & "</font>条记录" _
' & "第<font color=""red"">" & currentPage & "</font>页/" _
' & "合计<font color=""red"">" & pageCount & "</font>页"
p1 = pageStringTemplate0
p1 = Replace(p1, "{RowCount}", rowCount)
p1 = Replace(p1, "{CurrentPage}", currentPage)
p1 = Replace(p1, "{PageCount}", pageCount)
''''''''''
''''''''''
if currentPage > 1 then
'p2 = p2 & "<a href=""?" & PAGE_PARAM_NAME & "=" & (currentPage-1) & """>" & "上一页" & "</a> "
p2 = p2 & Replace(pageStringTemplatePrevious1, "{Previous}", currentPage -1)
else
'p2 = p2 & "上一页 "
p2 = p2 & pageStringTemplatePrevious0
end if
for i = 1 to pageCount
if i = currentPage then
p2 = p2 & i & " "
else
p2 = p2 & "<a href=""?" & PAGE_PARAM_NAME & "=" & i & """>" & (i) & "</a> "
end if
next
if currentPage < pageCount then
'p2 = p2 & "<a href=""?" & PAGE_PARAM_NAME & "=" & (currentPage+1) & """>" & "下一页" & "</a> "
p2 = p2 & Replace(pageStringTemplateNext1, "{Next}", currentPage + 1)
else
'p2 = p2 & "下一页 "
p2 = p2 & pageStringTemplateNext0
end if
'p = "<table width=""100%""><tr><td width=""80%"">" & p1 & "</td><td>" & p2 & "</td></tr></table>"
ret = pageStringTemplate
ret = Replace(ret, "{0}", p1)
ret = Replace(ret, "{1}", p2)
page = ret
End Function
End Class
%>
<%
'Class DataGrid
'根据给定的列模板和数据源(二维数组)来显示数据表格
'
Class DataGrid
Private m_dataSource
'行数
Private m_rowCount
'列数
Private m_columnCount
Private m_columns
'表格属性
Private m_tableAttribute
'表头公共属性
Private m_thAttribute
'表行公共属性
Private m_trAttribute
'单元格属性
Private m_tdAttribute
'列宽
Private m_columnWidths
'列对齐格式
Private m_columnAligns
'表头文字
Private m_headerTexts
'表头文字对齐属性
Private m_headerTextAligns
'Private m_rows
'Private m_r_columns
Public Property Let DataSource(ds)
m_dataSource = ds
End Property
Public Property Let RowCount(n)
m_rowCount = n
End Property
Public Property Let ColumnCount(n)
m_columnCount = n
End Property
Public Property Let Columns(cols)
m_columns = cols
End Property
Public Property Let TableAttribute(s)
m_tableAttribute = s
End Property
Public Property Let ThAttribute(s)
m_thAttribute = s
End Property
Public Property Let TrAttribute(s)
m_trAttribute = s
End Property
Public Property Let TdAttribute(s)
m_tdAttribute = s
End Property
Public Property Let ColumnWidths(arrayWidth)
m_columnWidths = arrayWidth
End Property
Public Property Let ColumnAligns(aligns)
m_columnAligns = aligns
End Property
Public Property Let HeaderTexts(arrayText)
m_headerTexts = arrayText
End Property
Public Property Let HeaderTextAligns(aligns)
m_headerTextAligns = aligns
End Property
'将二维数组转换成HTML表格
'@param rows 二维数组
'@return HTML表格源码
function ToTable()
dim ret
ret = ""
dim row, i, j
ret = ret & "<table " & m_tableAttribute & ">" & vblf
ret = ret & "<tr>" & thead() & "</tr>" & vblf
if IsArray(m_dataSource) then
for i = 0 to m_rowCount - 1
row = m_dataSource(i)
ret = ret & "<tr " & m_trAttribute & ">" & vblf
for j = 0 to m_columnCount - 1
ret = ret & "<td " & m_tdAttribute
If IsArray(m_columnAligns) Then
ret = ret & " align=""" & m_columnAligns(j) & """"
End If
ret = ret & ">" & bind(i, j) & "</td>"
next
'
'ret = ret & "<td " & m_tdAttribute & ">" & "<input type=""checkbox"" name=""id"" value=""" & Server.HTMLEncode(row(m_r_columns(0))) & """>" & "</td>" & vblf
'
'for j = 0 to UBound(m_r_columns)
' ret = ret & "<td " & m_tdAttribute & ">" & Server.HTMLEncode(row(m_r_columns(j))) & " </td>" & vblf
'next
'
'ret = ret & "<td " & m_tdAttribute & ">" & "<a href=""edit.asp?id=" & Server.HTMLEncode(row(m_r_columns(0))) & """>Edit</a>" & "</td>" & vblf
'
ret = ret & "</tr>" & vblf
next
end if
ret = ret & tfoot() & vblf
ret = ret & "</table>" & vblf
ToTable = ret
end function
Private Function bind(row, col)
dim format, find, replacement, index, myVarType
dim openB, closeB
format = m_columns(col)
openB = InStr(format, "{")
dim var
if openB < 0 then
bind = format
else
closeB = InStr(format, "}")
var = Mid(format, openB + 1,closeB - openB - 1)
openB = InStr(var, "[")
closeB = InStr(var, "]")
myVarType = Mid(var, 1, openB - 1)
'Response.Write(myVarType)
index = CInt(Mid(var, openB+1, closeB - openB -1))
'Response.Write(index)
find = "{" & myVarType & "[" & index & "]}"
If "HTML" = myVarType Then
replacement = m_dataSource(row)(index)
ElseIf "TEXT" = myVarType Then
replacement = Server.HTMLEncode(m_dataSource(row)(index))
End If
bind = Replace(format, find, replacement)
end if
End Function
'显示表头
'@param 表头数组
'@return 表头HTML源码
private function thead()
dim ret, i
ret = ""
for i = 0 to UBound(m_headerTexts)
ret = ret & "<th " & m_thAttribute
If IsArray(m_columnWidths) Then
ret = ret & " width=""" & m_columnWidths(i) & """"
End If
If IsArray(m_headerTextAligns) Then
ret = ret & " align=""" & m_headerTextAligns(i) & """"
End if
ret = ret & ">" & m_headerTexts(i) & "</th>" & vblf
next
thead = ret
end function
private function tfoot()
end function
end Class
%>