首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JQuery中使用CFGRID

在JQuery中使用CFGRID
EN

Stack Overflow用户
提问于 2010-08-03 17:49:09
回答 1查看 1.3K关注 0票数 1

我在使用CFGRID和JQuery时遇到了一个问题。以下是使用CFARTGALLERY数据库的示例代码:

gridtest.cfm

代码语言:javascript
复制
<!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):

代码语言:javascript
复制
<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的load函数的包装器页面,比如(gridtestmain.cfm):

代码语言:javascript
复制
<!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的限制吗?还是我做错了?任何建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-03 20:59:48

我目前还不能访问CF服务器,所以如果我错了,大家可以随时纠正我。

IIRC,当您创建CFForm时,CF处理头块以添加适当的EXT JavaScript文件。但是,在本例中,您将cfm加载为页面部分,而不是整个页面,因此浏览器不会处理第二个(加载的)头块。

我会尝试几种方法,看看哪一种效果最好:

1)包装您在CFForm中加载的div,而不是将其放在您要远程加载的子分区中。

2)在父页面中创建一个空白的、未使用的CFForm,以便加载相应的JS。

在此期间,如果我没记错的话,您不需要完整的页面定义(HEAD、BODY标记等)。在您要加载的小节中。您只需要显示您想要显示的标记。头信息等将是来自调用页面的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3395343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档