kbmmw 与extjs 的初次结合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了kbmmw 与extjs 的初次结合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3349字,纯文字阅读大概需要5分钟。
内容图文
前面写了extjs 的安装,今天写一下kbmmw 与extjs 的结合,参照delphi 产品经理marco文章 。
由于extjs 设计时要读取服务器端的数据,所以先要做一个rest 服务器。
先要用kbmmw 建一个web 服务器,可以参照我以前写的例子。
由于要返回数据库,因此加入对应的数据库访问控件,我使用unidac 加postgresql,需要的可以在
www.hoasql.com 去下载。
我们开始写服务器端。加上必要的数据库访问控件,并保证运行正常。
进入webservice 单元,加对应的代码。
function Twebsrv.Performget(ClientIdent:TkbmMWClientIdentity; const AURL:string; const Args:arrayof Variant):Variant; var mystringstream:Tstringstream; MimeType,s,scallback:string; Charset,tablename:string; qv:TkbmMWHTTPQueryValues; dataurl,mysql,swhere:string; I: Integer; begin qv:=TkbmMWHTTPQueryValues.Create; dataurl:=args[0]; qv.AsString:=Args[2]; if length(Args)<1then kbmMWRaiseException(KBMMW_ERR_SERVICE_HTTP_URLMISSING,‘Missing URL.‘); tryif args[0]=‘/version‘thenbegin result:=‘kbmmw 5.03‘; exit; end; if args[0]=‘/getdata‘thenbegin tablename:=qv.ValueByName[‘tname‘] ; if tablename=‘‘thenbegin result:=‘表名不能为空!‘; exit; end; swhere:= qv.ValueByName[‘where‘]; //where 需要编码。注意注入if swhere<>‘‘thenbeginif pos(‘;‘,swhere)>0thenbegin result:=‘非法条件!‘; exit; end; swhere:=‘ where ‘+swhere; end; mysql:=‘select * from ‘+tablename; mysql:=mysql+swhere; s:=datatojson(tablename, mysql,‘‘,‘‘); scallback:=qv.ValueByName[‘callback‘]; if scallback<>‘‘then result:=scallback+‘(‘+s+‘)‘else Result:=s; exit; end; result:=inherited Performget(ClientIdent,aurl,Args) ; finally qv.Free; mystringstream.Free; end; end;
下面是数据库转json 的代码
function Twebsrv.datatojson(tname,datasql, startp, endp: string; inparams: tstringlist = nil): string; var sjosn:TkbmMWJSONStreamer; alljson: TkbmMWJSONObject; datajson: TkbmMWJSONArray; recordjson: TkbmMWJSONObject; starti, endi, i: integer; idate:int64; mydate:Tdatetime; beginif startp = ‘‘then starti := 0else starti := strtoint(startp); alljson := TkbmMWJSONObject.Create;// ( (stobject); sjosn:=TkbmMWJSONStreamer.Create; trywith cx dobegin sql.clear; sql.add(datasql); if inparams <> nilthenbeginfor i := 0to inparams.Count - 1dobeginif inparams.Names[i] <> ‘‘thenbegin cx.Parambyname[inparams.Names[i]].AsString := inparams.ValueFromIndex[i]; end; end; end; try Open; except result:=‘数据库打开错误!2‘; exit; end; datajson :=TkbmMWJSONArray.Create;//(starray);whilenot eof dobegin recordjson :=TkbmMWJSONObject.Create; for i := 0to fields.Count - 1dobegincase fields[i].DataType of ftDate, ftTime, ftDateTime: begin mydate:=fields[i].AsDateTime; recordjson.AsString[fields[i].FieldName]:=formatdatetime(‘yyyy-mm-dd hh:nn:ss‘,mydate); endelse recordjson .AsString[fields[i].FieldName ]:= fields[i].AsString; end; end; datajson.add(recordjson); next; end; alljson.AsArray[tname] := datajson; end; result := sjosn.SaveToUTF16String(alljson); finally sjosn.Free; alljson.Free; end; end;
保存并运行。可以在浏览器里面输入http://localhost/getdata?tname=emp 访问服务器。
firefox 会返回这样
原始数据
好了,服务器做好,让它正常运行。
我们下载打开extjs 设计器
开启一个空白新工程
点击加号,选择一个新模型。
再新建一个Stores.选择JSONStore.
再右面属性栏,设置它的model.并选择autoload。
把MyajaxProxy 转换成MyJSONPProxy
设置myJSONPProxy 的URL.
ok, 可以右键选择datastore, loaddata, 然后就会出现一下眼睛图标。点击就可以看见服务器返回的数据了。
说明服务器工作正常。
现在拖一个gridpanel 到设计器上。
系统自动生成几个列。先不要管它,选择它的datastore 为myjsonstore.
右键选择,开始gird builder.
加入对应的字段,就可以生成gird了
ok, 保存工程文件。
在主文件菜单选择发布 命令(或者按F5)。
选择kbmmw 的web 服务器的文件目录并发布文件。
发布完成。
回到浏览器,输入http://localhost/index.html。
可以正常显示数据了。
当然了,还没有添加增、删、改的功能,这些对应服务器上也要做对应的处理,今天就不做了。
等以后有机会再做。
原文:http://www.cnblogs.com/xalion/p/7712228.html
内容总结
以上是互联网集市为您收集整理的kbmmw 与extjs 的初次结合全部内容,希望文章能够帮你解决kbmmw 与extjs 的初次结合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。