write ##class(model.person).Populate(100000)
/// <class>model.person</class> /// <a href="http://www.trirand.com/blog/">jqgrid</a> Class view.person Extends %CSP.Page { /// node Parameter DOMAIN = "person"; /// ClassMethod OnPage() As %Status { &html<<!DOCTYPE html> <html lang="ru"><head> <meta charset="ru"/> <title>#($$$Text("Intersystems Caché + jqGrid"))#</title> <style> /* */ body {font-size: 11px; font-family: Georgia,Verdana,Arial,sans-serif; } </style> <!-- --> <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.8.24/themes/base/jquery-ui.css" /> <!-- --> <link rel="stylesheet" type="text/css" href="http://www.trirand.net/themes/ui.jqgrid.css" /> <!-- , --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- (, , etc.) --> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script> <!-- jgGrid--> <script src="http://www.trirand.net/js/trirand/i18n/grid.locale-ru.js"></script> <!-- --> <script src="http://www.trirand.net/js/trirand/jquery.jqGrid.min.js"></script> <!-- --> <script src="themeswitcher.js"></script> </head><body> <!-- c --> <table id="grid"></table> <!-- --> <div id="bar"></div> <!-- --> <div id="theme"></div> <!-- --> <script type="text/javascript"> $( function(){ // document.ready var $grid=$( "#grid" ) // , bar="#bar" // , url='#(..Link("service.person.cls"))#' ; $grid.jqGrid({ // , caption: '#($$$Text("person"))#' , colModel: [ // { name: 'name', width: 250, editable: true } ,{ name: 'year', editable: true } ] , pager: bar // , url: url // , editurl: url // , datatype: "json" // , mtype: 'POST' , jsonReader: { // // // // repeatitems: false } , height: 350, width: 900 // , rownumbers: true // , rownumWidth: 45 // , viewrecords: true // , gridview: true // , , scroll: 1 // , hoverrows: true // , rowNum: 100 // , , sortable: true // , sortname: 'name' // }) .jqGrid('filterToolbar',{searchOnEnter:false}) // .jqGrid('gridResize', {}) // ; /// var serverHandler=function( resp ){ var array=[]; try { array=eval(resp.responseText); } catch(err){ return ["",e.description]; } return array; }; /// / , var opts={ afterSubmit: serverHandler // , closeAfterAdd: true // , clearAfterAdd: true // , closeAfterEdit: true // // . . , viewPagerButtons: false }; // $grid.jqGrid('navGrid',bar, { edit: true, edittext: '#($$$Text(""))#' , add: true, addtext: '#($$$Text(""))#' , del: true, deltext: '#($$$Text(""))#' , view: false, search: false } , opts // , opts // , opts // ); // // pager $(bar+"_center").remove(); // , UPD themeswitcher( $( "#theme" ) ); });</script></body></html>> Quit $$$OK } }
?rows=100&page=2&_search=true&name=McCormick&sidx=name&sord=desc
{"records": 102, "total": 2, "page": 2, "rows": [ { "id": 1,"name": "McCormick,Diane Z.", "year": 1910 } ,{ "id": 2,"name": "McCormick,Christen G.", "year": 1911 } ]}
?oper=add&id=_empty&name=habra&year=2005
?oper=edit&id=1&name=habra&year=2006
?oper=del&id=1
[ result, error, id ]
#; csp.inc #; service.person /// /// %request #define get(%name) $g(%request.Data(%name,1))
Include csp /// - Class service.person Extends %CSP.Page { /// node Parameter DOMAIN = "person"; /// Can only be referenced from another CSP page Parameter PRIVATE = 1; ClassMethod OnPage() As %Status { #; . csp.inc set oper=$$$get("oper") ; #; - if ( oper = "add" ) Quit ..Add() Q:oper="edit" ..Edit() Q:oper="del" ..Del() #; - #; set rows=$$$get("rows")\1 ; if ( rows < 1 ) { set rows = 100 ; } #; s page=$$$get("page")\1 s:page<1 page=1 #; ( - ) #; sql where s where="", params="", search=$CASE( $$$get("_search"), "true": 1, : 0 ) if ( search ) { s name=$$$get( "name" ) if ( name'="" ) { #; name , #; s where=where_$ListBuild( "name Like ?" ) s params( $increment(params) )="%"_name_"%" } s year=$$$get( "year" ) if ( year'="" ) { #; year - SQL - s where=where_$LB( """year"" = ?" ) ; - , params( $i( params ) )=year\1 ; } s where=$ListToString(where," AND ") } #; #; s countSQL=" SELECT Count(*) as records FROM model.person " if ( search ) s countSQL=countSQL_" WHERE "_where s records=0 #dim RS as %SQL.StatementResult s stmt=##class(%SQL.Statement).%New() s sc=stmt.%Prepare(countSQL) if 'sc d ..ShowError(sc) Q $$$OK s RS=stmt.%Execute(params...) if RS.%SQLCODE d ##class(%SYSTEM.SQL).SQLCODE(RS.%SQLCODE) Q $$$OK s:RS.%Next() records=RS.records kill RS #; s total = records\rows ; , part=records#rows ; s:part total=total+1 ; #; , s:page>total page=total ; #; s end=page*rows, start=end-rows #; #; sql order by #; jqgrid s order="",sidx=$$$get( "sidx" ), sord=$$$get( "sord" ) #; if $ListFind( $ListBuild("name","year"), sidx ) { s:sidx="year" sidx="""year""" ;year - sql s order=sidx _ " "_$CASE( sord, "desc": "desc", : "asc" ) } #; #; , ID s sql=" SELECT ID From model.person " s:search sql=sql_" WHERE "_where s:order'="" sql=sql_" ORDER BY "_order s sc=stmt.%Prepare(sql) if 'sc d ..ShowError(sc) Q $$$OK s RS=stmt.%Execute(params...) if RS.%SQLCODE d ##class(%SYSTEM.SQL).SQLCODE(RS.%SQLCODE) Q $$$OK write "{" ; , """records"": ", records ; , ", ""total"": ", total ; , ", ""page"": ", page ; , ", ""rows"": [" ; #; #; JSON - http://json.org #; ..QuoteJS() #;- #define json(%str) """"_$replace($zcvt(%str,"O","JS"),"\'","'")_"""" #; s sc="" for { s sc=RS.%Next() Quit:sc=0 s rnum=RS.%ROWCOUNT if (rnum < start) continue ; if (rnum > end) Quit ; #; , #;rnum>1 - , start=0 if ( rnum > start ) && ( rnum > 1 ) { w "," } s name=##class(model.person).nameGetStored(RS.ID) , year=##class(model.person).yearGetStored(RS.ID) w "{""id"":",RS.ID,",""name"":",$$$json(name),",""year"":",$$$json(year),"}" } w "]}" Q $$$OK } /// ClassMethod Add() As %Status { s obj=##class(model.person).%New() Q ..Set(.obj) } /// ClassMethod Edit() As %Status { s id=$$$get("id"), obj=##class(model.person).%OpenId(id,.sc) if $$$ISERR( sc ) { Q ..wResult( sc, id ) } Q ..Set(.obj) } /// , , ClassMethod Set(obj As model.person) As %Status { if ( $g(obj) = "" ) || ( '$IsObject(obj) ) { s sc=$$$ERROR( $$$GeneralError, $$$Text(" ") ) Q ..wResult( sc ) } s obj.name=$$$get("name") s obj.year=$$$get("year") s id="", sc=obj.%Save() s:$$$ISOK(sc) id=obj.%Id() Q ..wResult( sc, id ) Q $$$OK } /// ClassMethod Del() As %Status { s id=$$$get("id"), sc=##class(model.person).%DeleteId(id) Q ..wResult( sc, id ) Q $$$OK } /// ClassMethod wResult(sc As %String = "", id As %String) As %Status { s result="false", msg="", id=$g(id) if $$$ISOK( $g(sc) ) { s result="true" } else { s msg=##class(%SYSTEM.Status).GetOneErrorText(sc) } w "[",result,",",..QuoteJS(msg),",",..QuoteJS(id),"]" Q $$$OK } }
Source: https://habr.com/ru/post/144917/
All Articles