爪哇哇

          一個軟件分析師的博客

          近期負責公司的OA改造,接觸了ext-js框架,自己動手寫了些代碼,最有成就感的是 extnd里分頁的修改,一下是部分修改心得

          一:

          分頁要自己重寫:在 extnd-all-debug重寫拿取數據部分

          //自己重寫分頁拿數據的方法,這樣數據行數會正確現實
            var ds = new Ext.nd.data.DominoViewStore({
                    proxy: new Ext.data.HttpProxy({
                        url: Ext.nd.extndUrl+'GetView?OpenAgent',
                        method: "GET"
                    }),
                    baseParams: {db: "/"+Ext.nd.Session.CurrentDatabase.FilePath, vw: this.viewName },
                    reader: viewEntryReader,
                    remoteSort: true
                });

          。。。。。。。。。。。。。。。

          getView的ls代理如下

          'GetView:

          Option Public
          Option Explicit


          Sub Initialize
          %REM
          This agent can be called from the web to search any view and return results in the
          same format as the ?ReadViewEntries command. This was created for use with the
          NotesView2 class v1.3 and above.
          %END REM
           
           On Error Goto ErrorHandler
           
           Dim session As New NotesSession
           Dim dbSearch As NotesDatabase
           Dim colEntries As NotesViewEntryCollection
           Dim vwSearch As NotesView
           Dim entryResult As NotesViewEntry
           Dim docCurrent As NotesDocument
           Dim docResult As NotesDocument
           Dim col As NotesViewColumn
           Dim strQuery As String
           Dim strDb As String
           Dim strView As String
           Dim strCategory As String
           Dim intMax As Integer
           Dim lngCount As Long, i As Long
           Dim lngStart As Long, lngEnd As Long
           Dim strParameters As String
           Dim lngResults As Long
           Dim x,n As Integer
           Dim xmlStr,resortdescending ,resortascending As String
           Dim nav As NotesViewNavigator
           
           
           'start the xml document
           Print "Content-Type:text/xml;"
           Print "<?xml version=""1.0"" encoding=""gb2312""?>"
           
           'first we get the search parameters out of the querystring
           'db, vw, query, searchmax, count, and start
           Set docCurrent = session.DocumentContext
           
           strParameters = docCurrent.GetItemValue("Query_String")(0)
           'Msgbox strParameters
           strDb = GetParameter("db",strParameters)
           strDb = Replace(Strright(strDb,"/"),"/","\")
           strView = GetParameter("vw",strParameters)
           strQuery = GetParameter("query",strParameters)
           strCategory= GetParameter("RestrictToCategory",strParameters)
           resortdescending=GetParameter("resortdescending",strParameters)
           resortascending=GetParameter("resortascending",strParameters)
           
           intMax = 0
           If Isnumeric(GetParameter("searchmax",strParameters)) Then intMax = Cint(GetParameter("searchmax",strParameters))
           lngCount = 20
           If Isnumeric(GetParameter("count",strParameters)) Then lngCount = Clng(GetParameter("count",strParameters))
           lngStart = 1
           If Isnumeric(GetParameter("start",strParameters)) Then lngStart = Clng(GetParameter("start",strParameters))
           
           'now we get the view to search
           Set dbSearch = session.GetDatabase("",strDb,False)
           Set vwSearch = dbSearch.GetView(strView)
           
           'Msgbox resortdescending +" && "+resortascending
           
           'now we run the search
           If   strCategory="" Then
            
            Set colEntries = vwSearch.AllEntries 
           Else
            Set colEntries = vwSearch.GetAllEntriesByKey(strCategory)
           End If 
           
           lngResults=colEntries.Count
           
           
           'now we spit out the results
           Print "<viewentries toplevelentries=""" & Cstr(lngResults) & """>"
           
           
           'set the starting point for the loop
           If lngStart > lngResults Then lngStart = lngResults
           
           'set the ending point for the loop
           lngEnd = lngStart + lngCount - 1
           If lngEnd > lngResults Then lngEnd = lngResults
           'now loop through the appropriate subset of results and print out a viewentry tag for each one
           i = lngStart
           While i <= lngEnd
            
            If i = lngStart Then
             Set entryResult = colEntries.GetNthEntry(i) 
            Else
             Set entryResult = colEntries.GetNextEntry(entryResult)
            End If
            
            
            If Not entryResult Is Nothing   Then
            'If Not entryResult Is Nothing And entryResult.IsValid  Then
             'If entryResult.IsDocument Then
             Set docResult = entryResult.Document
             Print  "<viewentry position=""" & Cstr(i) & """ unid=""" & Cstr(docResult.universalID) & """ noteid=""" & Cstr(docResult.NoteID) & """ siblings=""" & Cstr(entryResult.SiblingCount) & """>"
             x = 0
             n=0
             Forall value In entryResult.ColumnValues
              Set col=vwSearch.Columns(x)
              
              If Not col.isCategory And  Not col.IsHidden  Then
               Print "<entrydata columnnumber=""" & Cstr(n) & """ name=""" & col.itemName & """>"
               Print  "<text>" & XMLEscape(GetValue(value,Cstr(docResult.universalID))) & "</text>"
               Print  "</entrydata>"
               n=n+1
              End If
              x = x + 1
             End Forall
             Print "</viewentry>"
             'End If
            End If
            i = i + 1
           Wend
          AtEnd:
           Print "</viewentries>"
           
           ''''Msgbox xmlStr
           Print xmlStr
           vwSearch.Clear
           Set dbSearch=Nothing
           Set vwSearch=Nothing
           Exit Sub
          ErrorHandler:
           Msgbox "<error>" & "Error in ($Ext.nd.SearchView): " & Error & "---at " & Erl & "</error>"
           Print "<error>" & "Error in ($Ext.nd.SearchView): " & Error & "---at " & Erl & "</error>"
           Resume AtEnd
          End Sub
          Function GetParameter(strParamName As String, strQuery As String) As String
           'this gets a parameter out of a querystring
           Dim i As Integer
           Dim s As String
           Dim v As Variant
           
           GetParameter = ""
           
           i = Instr(Ucase(strQuery),"&" & Ucase(strParamName) & "=")
           If i <> 0 Then
            s = Strright(Mid(strQuery, i),"=")
            If Instr(s, "&") Then
             s = Strleft(s, "&")
            End If
            v = Evaluate("@UrlDecode(""Domino""; """ & s & """)")
            GetParameter = Cstr(v(0))
           End If
          End Function
          Function XMLEscape(strValue As String) As String
           'this escapes a string so it can be printed out to xml safely
           strValue = Replace(strValue, "&" , "&amp;")
           strValue = Replace(strValue, "<" , "&lt;")
           strValue = Replace(strValue, ">" , "&gt;")
           XMLEscape = strValue
          End Function


          Function GetValue(strValue As Variant,id As String) As String
           On Error Goto sErr
           
           'Forall vs In strValue
           ' Msgbox "vs=" &  Cstr(vs)
           'End Forall
           GetValue=Cstr(strValue)
           Exit Function
          sErr:
           GetValue="文檔" & id
           Exit Function
          End Function

           

          有興趣可以研究下 ext-js的AJAX框架,確實很有趣

          posted on 2007-12-29 14:32 李立波 閱讀(1933) 評論(1)  編輯  收藏 所屬分類: DOMINO

          Feedback

          # re: 近期負責公司的OA改造,接觸了ext-js框架,自己動手寫了些代碼,最有成就感的是 extnd里分頁的修改,一下是部分修改心得 2008-11-19 18:31 Mingle

          您好!想了解下你使用的extjs哪個版本?1.0?2.0?2.01?2.2?修改ExtND中的分頁,主要解決了哪些問題呢?切盼您的指導和分享。謝謝!eMail:dominonotes@163.com  回復  更多評論   


          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河间市| 丰城市| 万山特区| 蒙自县| 潮州市| 沛县| 江安县| 北宁市| 临海市| 德江县| 苍梧县| 西乡县| 廉江市| 唐河县| 扬中市| 孙吴县| 康乐县| 嵩明县| 凤台县| 民丰县| 小金县| 胶州市| 家居| 五华县| 瑞安市| 施甸县| 秦皇岛市| 类乌齐县| 沅陵县| 安康市| 固安县| 莱州市| 会泽县| 和顺县| 繁昌县| 调兵山市| 济阳县| 阜阳市| 静安区| 奉化市| 敖汉旗|