使用CFGRID与jQuery

我遇到使用CFGRID使用jQuery的一个问题。 下面是使用CFARTGALLERY数据库中的示例代码:

gridtest.cfm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <cfajaximport tags="cfform,cfgrid"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>CFGRID Test</title> </head> <cfinvoke component="gridtest" method="getartistname" returnvariable="artistname" /> <body> <cfform name="frmArtists" format="html"> <cfselect name="selArtist" query="artistname" queryPosition="below" display="lastname" value="artistid"> <option value="0">Select artist...</option> </cfselect> <p></p> <cfgrid name="artgrid" bind="cfc:gridtest.getartname({cfgridpage}, {cfgridpagesize}, {cfgridsortcolumn}, {cfgridsortdirection}, {selArtist})" format="html" pagesize="8" bindOnLoad="false" selectmode="browse" width="400"> <cfgridcolumn name="artname" header="Art Name" display="yes" width="400"> </cfgrid> </cfform> </body> </html>

它有一个简单cfselect控制来选择艺术家的名字,并且点击时,该CFGRID展示了作品的名字。

这里的CFC(gridtest.cfc):

<cfcomponent> <cfset application.datasource="cfartgallery"> <cfset cfartgallery=#application.datasource#> <cffunction name="getArtistName" access="public" returntype="query"> <cfquery name="artistname" datasource="#cfartgallery#"> SELECT ARTISTID,LASTNAME FROM ARTISTS ORDER BY LASTNAME </cfquery> <cfreturn artistname> </cffunction> <cffunction name="getartname" access="remote" returntype="struct"> <cfargument name="page" type="numeric" required="true"> <cfargument name="pagesize" type="numeric" required="true"> <cfargument name="pagesortcolumn" type="string" required="false" default=""> <cfargument name="pagesortdir" type="string" required="false" default=""> <cfargument name="artistid" type="numeric" required="yes"> <cfset var artname=""> <cfquery name="artname" datasource="#cfartgallery#"> SELECT ARTNAME FROM ART WHERE ARTISTID=<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.artistid#"> </cfquery> <cfreturn QueryConvertForGrid(artname,page,pagesize)> </cffunction> </cfcomponent>

到目前为止,一切都很好。 但是,如果我用一个包装页面使用jQuery的加载功能,像这样(gridtestmain.cfm):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#div1').load('gridtest.cfm'); }); </script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>CFGRID Test Under JQuery</title> </head> <body> <div id="div1"> </div> </body> </html>

该CFGRID消失,只有一个边界框。 在IE中报告的错误“Ext.EventObject为空或不是一个对象。” 搜索网表明,Ext库被加载多次造成问题的原因,但我不能看到它被加载一次以上。

这是JQuery的的限制? 还是我做了错误的方式? 任何建议深表感谢。

--------------解决方案-------------

我没有访问CF服务器的时刻,所以大家随时纠正我,如果我错了。

IIRC,当你创建一个CFFORM,CF处理的头块添加相应的EXT JavaScript文件。 然而,在这种情况下,与要装入的CFM作为页部分,而不是一个整页,所以第二(加载)HEAD块没有处理由浏览器。

我会尝试一些东西,看看哪个效果最好:

1)总结要装入把它的子部分,你是远程加载在CFFORM而不是股利。

2)创建父页空白,未用的CFFORM,所以适当的JS被载入了点。

虽然我在这,如果我没有记错,你并不需要一个完整的页面定义(头部,身体标记等)正在加载的小节。 你只需要你想显示的标记。 的HEAD信息等人将是从调用页面之一。

分类:jQuery的 时间:2015-03-16 人气:10
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.566 (s). 11 q(s)