📄 list-script-function.asp
字号:
sFldVar2 = "y_" & Mid(sFldVar, 3): sFldOpr2 = "w_" & Mid(sFldVar, 3)
sFldCond = "v_" & Mid(sFldVar, 3)
sFldSrchOpr = FIELD.FldSrchOpr
sFldSrchOpr2 = FIELD.FldSrchOpr2
##-->
Session(ewSessionTblAdvSrch & "_<!--##=sFldVar##-->") = ""
<!--## If sFldSrchOpr = "USER SELECT" Then ##-->
Session(ewSessionTblAdvSrch & "_<!--##=sFldOpr##-->") = ""
<!--## End If ##-->
<!--## If sFldSrchOpr2 <> "" Then ##-->
Session(ewSessionTblAdvSrch & "_<!--##=sFldCond##-->") = "AND"
<!--## End If ##-->
<!--## If sFldSrchOpr = "BETWEEN" Or sFldSrchOpr2 <> "" Then ##-->
Session(ewSessionTblAdvSrch & "_<!--##=sFldVar2##-->") = ""
<!--## If sFldSrchOpr2 = "USER SELECT" Then ##-->
Session(ewSessionTblAdvSrch & "_<!--##=sFldOpr2##-->") = ""
<!--## End If ##-->
<!--## End If ##-->
<!--##
End If
Next
##-->
Session(ewSessionTblBasicSrch) = ""
Session(ewSessionTblBasicSrchType) = ""
End Sub
'-------------------------------------------------------------------------------
' Function RestoreSearch
' - Restore all search parameters
'
Sub RestoreSearch()
' Restore advanced search settings
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGenerate And (FIELD.FldSearch Or FIELD.FldExtendedBasicSearch) And FIELD.FldHtmlTag <> "FILE" Then
sFldVar = FIELD.FldVar: sFldOpr = "z_" & Mid(sFldVar, 3)
sFldCond = "v_" & Mid(sFldVar, 3)
sFldVar2 = "y_" & Mid(sFldVar, 3): sFldOpr2 = "w_" & Mid(sFldVar, 3)
sFldSrchOpr = FIELD.FldSrchOpr
sFldSrchOpr2 = FIELD.FldSrchOpr2
##-->
<!--##=sFldVar##--> = Session(ewSessionTblAdvSrch & "_<!--##=sFldVar##-->")
<!--## If sFldSrchOpr = "USER SELECT" Then ##-->
<!--##=sFldOpr##--> = Session(ewSessionTblAdvSrch & "_<!--##=sFldOpr##-->")
<!--## End If ##-->
<!--## If sFldSrchOpr2 <> "" Then ##-->
<!--##=sFldCond##--> = Session(ewSessionTblAdvSrch & "_<!--##=sFldCond##-->")
<!--## End If ##-->
<!--## If sFldSrchOpr = "BETWEEN" Or sFldSrchOpr2 <> "" Then ##-->
<!--##=sFldVar2##--> = Session(ewSessionTblAdvSrch & "_<!--##=sFldVar2##-->")
<!--## If sFldSrchOpr2 = "USER SELECT" Then ##-->
<!--##=sFldOpr2##--> = Session(ewSessionTblAdvSrch & "_<!--##=sFldOpr2##-->")
<!--## End If ##-->
<!--## End If ##-->
<!--##
End If
Next
##-->
psearch = Session(ewSessionTblBasicSrch)
psearchtype = Session(ewSessionTblBasicSrchType)
End Sub
'-------------------------------------------------------------------------------
' Function SetUpSortOrder
' - Set up Sort parameters based on Sort Links clicked
' - Variables setup: sOrderBy, Session(TblOrderBy), Session(Tbl_Field_Sort)
Sub SetUpSortOrder()
Dim sOrder, sSortField, sLastSort, sThisSort
Dim bCtrl
<!--## If iSortType = 2 Then ##-->
' Check for Ctrl pressed
If Request.QueryString("ctrl").Count > 0 Then
bCtrl = True
Else
bCtrl = False
End If
<!--## End If ##-->
' Check for an Order parameter
If Request.QueryString("order").Count > 0 Then
sOrder = Request.QueryString("order")
<!--##
For i = 1 to TABLE.Fields.Count
SET FIELD = TABLE.Fields.Seq(i)
sFldName = ewFieldName()
sFldVar = FIELD.FldVar
If FIELD.FldGenerate And FIELD.FldList And FIELD.FldType <> 205 Then
If iSortType = 1 Then ' Single Column Sort
##-->
' Field <!--##=sFldName##-->
If sOrder = "<!--##=FIELD.FldName##-->" Then
sSortField = "<!--##=Quote(sFldName)##-->"
sLastSort = Session(ewSessionTblSort & "_<!--##=sFldVar##-->")
If sLastSort = "ASC" Then sThisSort = "DESC" Else sThisSort = "ASC"
Session(ewSessionTblSort & "_<!--##=sFldVar##-->") = sThisSort
Else
If Session(ewSessionTblSort & "_<!--##=sFldVar##-->") <> "" Then Session(ewSessionTblSort & "_<!--##=sFldVar##-->") = ""
End If
<!--##
ElseIf iSortType = 2 Then ' Multi Column Sort
##-->
' Field <!--##=sFldName##-->
If sOrder = "<!--##=FIELD.FldName##-->" Then
sSortField = "<!--##=Quote(sFldName)##-->"
sLastSort = Session(ewSessionTblSort & "_<!--##=sFldVar##-->")
If sLastSort = "ASC" Then sThisSort = "DESC" Else sThisSort = "ASC"
Session(ewSessionTblSort & "_<!--##=sFldVar##-->") = sThisSort
Else
If Not bCtrl And Session(ewSessionTblSort & "_<!--##=sFldVar##-->") <> "" Then Session(ewSessionTblSort & "_<!--##=sFldVar##-->") = ""
End If
<!--##
End If
End If
Next
If iSortType = 1 Then
##-->
Session(ewSessionTblOrderBy) = sSortField & " " & sThisSort
Session(ewSessionTblStartRec) = 1
<!--##
ElseIf iSortType = 2 Then
##-->
If bCtrl Then
sOrderBy = Session(ewSessionTblOrderBy)
If InStr(sOrderBy, sSortField & " " & sLastSort) > 0 Then
sOrderBy = Replace(sOrderBy, sSortField & " " & sLastSort, sSortField & " " & sThisSort)
Else
If sOrderBy <> "" Then sOrderBy = sOrderBy & ", "
sOrderBy = sOrderBy & sSortField & " " & sThisSort
End If
Session(ewSessionTblOrderBy) = sOrderBy
Else
Session(ewSessionTblOrderBy) = sSortField & " " & sThisSort
End If
Session(ewSessionTblStartRec) = 1
<!--##
End If
##-->
End If
sOrderBy = Session(ewSessionTblOrderBy)
If sOrderBy = "" Then
If ewSqlOrderBy <> "" And ewSqlOrderBySessions <> "" Then
sOrderBy = ewSqlOrderBy
Session(ewSessionTblOrderBy) = sOrderBy
Dim arOrderBy, i
arOrderBy = Split(ewSqlOrderBySessions, ",")
For i = 0 to UBound(arOrderBy)\2
Session(ewSessionTblSort & "_" & arOrderBy(i*2)) = arOrderBy(i*2+1)
Next
End If
End If
End Sub
'-------------------------------------------------------------------------------
' Function SetUpStartRec
' - Set up Starting Record parameters based on Pager Navigation
' - Variables setup: nStartRec
Sub SetUpStartRec()
Dim nPageNo
' Check for a START parameter
If Request.QueryString(ewTblStartRec).Count > 0 Then
nStartRec = Request.QueryString(ewTblStartRec)
Session(ewSessionTblStartRec) = nStartRec
ElseIf Request.QueryString("pageno").Count > 0 Then
nPageNo = Request.QueryString("pageno")
If IsNumeric(nPageNo) Then
nStartRec = (nPageNo-1)*nDisplayRecs+1
If nStartRec <= 0 Then
nStartRec = 1
ElseIf nStartRec >= ((nTotalRecs-1)\nDisplayRecs)*nDisplayRecs+1 Then
nStartRec = ((nTotalRecs-1)\nDisplayRecs)*nDisplayRecs+1
End If
Session(ewSessionTblStartRec) = nStartRec
Else
nStartRec = Session(ewSessionTblStartRec)
End If
Else
nStartRec = Session(ewSessionTblStartRec)
End If
' Check if correct start record counter
If Not IsNumeric(nStartRec) Or nStartRec = "" Then ' Avoid invalid start record counter
nStartRec = 1 ' Reset start record counter
Session(ewSessionTblStartRec) = nStartRec
ElseIf CLng(nStartRec) > CLng(nTotalRecs) Then ' Avoid starting record > total records
nStartRec = ((nTotalRecs-1)\nDisplayRecs)*nDisplayRecs+1 ' point to last page first record
Session(ewSessionTblStartRec) = nStartRec
End If
End Sub
'-------------------------------------------------------------------------------
' Function ResetCmd
' - Clear list page parameters
' - RESET: reset search parameters
' - RESETALL: reset search & master/detail parameters
' - RESETSORT: reset sort parameters
Sub ResetCmd()
Dim sCmd
' Get Reset Cmd
If Request.QueryString("cmd").Count > 0 Then
sCmd = Request.QueryString("cmd")
' Reset Search Criteria
If LCase(sCmd) = "reset" Then
Call ResetSearch()
' Reset Search Criteria & Session Keys
ElseIf LCase(sCmd) = "resetall" Then
Call ResetSearch()
<!--##
If TABLE.TblMasterTbl <> "" And TABLE.TblMasterFld <> "" And TABLE.TblDetailFld <> "" Then
##-->
Session(ewSessionTblMasterWhere) = "" ' Clear master criteria
sDbWhereMaster = ""
Session(ewSessionTblDetailWhere) = "" ' Clear detail criteria
sDbWhereDetail = ""
<!--##
For i = 0 to UBound(arDetailFlds)
Set DETAILFIELD = TABLE.Fields(arDetailFlds(i))
sDetailFldVar = DETAILFIELD.FldVar
sDetailFldVar2 = Mid(sDetailFldVar, 3)
##-->
Session(ewSessionTblMasterKey & "_<!--##=sDetailFldVar2##-->") = "" ' Clear Master Key Value
<!--##
Next
End If
##-->
' Reset Sort Criteria
ElseIf LCase(sCmd) = "resetsort" Then
sOrderBy = ""
Session(ewSessionTblOrderBy) = sOrderBy
<!--##
If iSortType > 0 Then
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldList And FIELD.FldGenerate And FIELD.FldType <> 205 Then
sFldVar = FIELD.FldVar
##-->
If Session(ewSessionTblSort & "_<!--##=sFldVar##-->") <> "" Then Session(ewSessionTblSort & "_<!--##=sFldVar##-->") = ""
<!--##
End If
Next
End If
##-->
End If
' Reset Start Position (Reset Command)
nStartRec = 1
Session(ewSessionTblStartRec) = nStartRec
End If
End Sub
<!--## If bExportXml Or bExportCsv Then ##-->
'-------------------------------------------------------------------------------
' Function ExportData
' - Export Data in Xml or Csv format
Sub ExportData(sExport, sSql)
Dim oXmlDoc, oXmlTbl, oXmlRec, oXmlFld
Dim sCsvStr
Dim rs
' Set up Record Set
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = <!--##=ewCursorLocation##-->
rs.Open sSql, conn, 1, 2
nTotalRecs = rs.RecordCount
nStartRec = 1
SetUpStartRec() ' Set Up Start Record Position
<!--## If bExportXml Then ##-->
If sExport = "xml" Then
Set oXmlDoc = Server.CreateObject("MSXML.DOMDocument")
Set oXmlTbl = oXmlDoc.createElement("table")
End If
<!--## End If ##-->
<!--## If bExportCsv Then ##-->
If sExport = "csv" Then
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGenerate And FIELD.FldList And FIELD.FldType <> 205 Then
##-->
sCsvStr = sCsvStr & ""<!--##=DoubleQuote(FIELD.FldName,1)##-->"" & ","
<!--##
End If
Next
##-->
sCsvStr = Left(sCsvStr, Len(sCsvStr)-1) ' Remove last comma
sCsvStr = sCsvStr & vbCrLf
End If
<!--## End If ##-->
' Set the last record to display
If nDisplayRecs < 0 Then
nStopRec = nTotalRecs
Else
nStopRec = nStartRec + nDisplayRecs - 1
End If
' Move to first record directly for performance reason
nRecCount = nStartRec - 1
If Not rs.Eof Then
rs.MoveFirst
rs.Move nStartRec - 1
End If
nRecActual = 0
Do While (Not rs.Eof) And (nRecCount < nStopRec)
nRecCount = nRecCount + 1
If CLng(nRecCount) >= CLng(nStartRec) Then
nRecActual = nRecActual + 1
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGenerate And FIELD.FldList Then
##-->
<!--##=FIELD.FldVar##--> = rs("<!--##=FIELD.FldName##-->")
<!--##
End If
Next
##-->
<!--## If bExportXml Then ##-->
If sExport = "xml" Then
Set oXmlRec = oXmlDoc.createElement("record")
Call oXmlTbl.appendChild(oXmlRec)
<!--##
If PROJ.XMLEncoding <> "" Then
sEncoding = " encoding=""""" & PROJ.XMLEncoding & """"""
Else
sEncoding = ""
End If
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGenerate And FIELD.FldList And FIELD.FldType <> 205 Then
##-->
' Field <!--##=FIELD.FldName##-->
Set oXmlFld = oXmlDoc.createElement("<!--##=Mid(FIELD.FldVar, 3)##-->")
sTmp = <!--##=FIELD.FldVar##-->
if IsNull(sTmp) then sTmp = "<Null>"
oXmlFld.Text = sTmp
Call oXmlRec.AppendChild(oXmlFld)
<!--##
End If
Next
##-->
Set oXmlRec = Nothing
End If
<!--## End If ##-->
<!--## If bExportCsv Then ##-->
If sExport = "csv" Then
<!--##
For i = 1 to TABLE.Fields.Count
Set FIELD = TABLE.Fields.Seq(i)
If FIELD.FldGenerate And FIELD.FldList And FIELD.FldType <> 205 Then
##-->
' Field <!--##=FIELD.FldName##-->
sCsvStr = sCsvStr & """" & Replace(<!--##=FIELD.FldVar##-->&"","""","""""") & """" & ","
<!--##
End If
Next
##-->
sCsvStr = Left(sCsvStr, Len(sCsvStr)-1) ' Remove last comma
sCsvStr = sCsvStr & vbCrLf
End If
<!--## End If ##-->
End If
rs.MoveNext
Loop
' Close recordset and connection
rs.Close
Set rs = Nothing
<!--## If bExportXml Then ##-->
If sExport = "xml" Then
Response.Write "<?xml version=""1.0""<!--##=sEncoding##--> standalone=""yes""?>" & vbcrlf
Response.Write oXmlTbl.xml
Set oXmlTbl = Nothing
Set oXmlDoc = Nothing
End If
<!--## End If ##-->
<!--## If bExportCsv Then ##-->
If sExport = "csv" Then
Response.Write sCsvStr
End If
<!--## End If ##-->
End Sub
<!--## End If ##-->
%>
<!--##/session##-->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -