JqGrid and subgrid error
JqGrid and subgrid error
Hi I am trying to setup a subgrid within my jqGrid, however, I am getting an illegal xml character error that is pointing to line 34 in the jquery.jqGrid.min.js file.
Here is my header file:
<!--- Header file for fasap --->
<link rel="stylesheet" type="text/css" title="Genesis" href="css/main.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" title="Genesis" href="css/redmond/jquery-ui-1.8.10.custom.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" media="screen" href="css/jquery.ui.all.css" />
<link rel="stylesheet" type="text/css" title="Genesis" href="css/jquery.treeview.css" media="screen, projection" />
<link rel="stylesheet" type="text/css" media="screen" href="jqGrid/css/ui.jqgrid.css" />
<script src="includes/css_browser_selector.js" type="text/javascript"></script>
<script src="includes/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="includes/jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script>
<script src="includes/jquery.cookie.js" type="text/javascript"></script>
<script src="includes/jquery.treeview.js" type="text/javascript"></script>
<script src="includes/grid.locale-en.js" type="text/javascript"></script>
<script src="includes/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="jqGrid/src/jqModal.js" type="text/javascript"></script>
<script src="jqGrid/src/grid.loader.js" type="text/javascript"></script>
<script src="jqGrid/src/grid.formedit.js" type="text/javascript"></script>
<script src="jqGrid/src/grid.common.js" type="text/javascript"></script>
<script src="jqGrid/src/jquery.searchFilter.js" type="text/javascript"></script>
<script src="jqGrid/src/grid.subgrid.js" type="text/javascript"</script>
</head><body>
<cfset CurrYear = DateFormat(CreateDate(Left(Application.AidYear,2),1,1),'yyyy')>
<cfset PrevYear = CurrYear - 1>
<cfset NextYear = CurrYear + 1>
<div id="header">
<img src="images/top_corner.png" id="top_corner" />
<img id="seal" src="images/seal.png"/>
<img src="images/top_curve.png" id="top_curve"/>
<span class="ucmerced-logo">
<a href="./" style="border:0"><img src="images/ucmerced_logo.png" border="0" /></a>
</span>
</div>
<br><br><p align="right" style="margin-top:-10px;margin-bottom:-25px"><cfif IsDefined('session.ucm_name')>Hi, <cfoutput>#session.ucm_name#
</cfoutput><br /><a href="logout.cfm">Log out</a></cfif></p>
<div id="main">
<cfoutput>
<a title="Home" rel="home"><h1 align="center">#CurrYear#-#NextYear# Satisfactory Academic Appeal</h1></a>
</cfoutput>
</div>
Here is my main cfm file:
<html>
<head><title>FinAid Satisfactory Academic Appeal</title>
<cfinclude template="includes/_header.cfm" />
<script type="text/javascript">
$("document").ready(function(){
jQuery('#grid').jqGrid({
jsonReader: {
root: "DATA",
page: "CURPAGE",
total: "TOTALPAGES",
records: "TOTALROWS",
repeatitems: false,
id: "rowid",
subgrid: {root: "DATA",
repeatitems: false,
cell: ""}
},
url: 'get_applicants.cfc?method=get_applicants',
datatype: 'json',
width: "auto",
height: "auto",
mtype: "GET",
colNames: ['Student ID','Last Name','First Name','Term Code','Save Date','Submit Date'],
colModel: [
{name:'studentid',index:'studentid', width:100, sortable:true},
{name:'last',index:'last', width:200, sortable: true},
{name:'first',index:'first', width:200, sotable: true},
{name:'term',index:'term', width: 100, sortable: true},
{name:'savedate',index:'savedate', width:220, sortable: false},
{name:'submitdate',index:'submitdate', width:220, sortable: false}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
sortorder: "asc",
viewrecords: true,
subGrid: true,
subGridURL: 'get_applicants.cfc?method=banner_stuff',
subGridModel: [{ name : ['studentid','SAPCode','SAPDescription'],
width : [50, 200],
params:['studentid']}
],
loadonce: false,
caption: "List of Applicants"
}).navGrid('#pager', {search:true, edit:false, add:false, del:false});
jQuery('#grid').showCol('subgrid');
});
</script>
<cfinclude template="includes/admin_menu.cfm"/>
<div id="sidebar-left">
<table id="grid"></table>
<div id="pager"</div>
</div>
</body>
</html>
and here is the cfc file that the jqGrid and subgrid are pointing to:
<cfcomponent>
<cffunction name="get_applicants" access="remote" returntype="any" returnformat="json" output="false" securejson="false">
<cfargument name="page" type="numeric" default="1">
<cfargument name="rows" type="numeric" default="10">
<cfargument name="sidx" type="string" default="">
<cfargument name="sord" type="string" default="ASC">
<CFSET CurrYear = DateFormat(Now( ), 'yyyy')>
<cfset FallSem = "#CurrYear#30">
<CFSET NextYear = CurrYear + 1>
<cfset PartYear=DateFormat(Now( ), 'yy')>
<cfset PrevYear = #PartYear# - 1>
<cfset NextPart= #partYear# + 1>
<cfset AidYear="#PartYear##NextPart#">
<cfquery name="get_student" datasource="finaid">
select Student_ID "StudentID", SaveDate, SubmitDate, Term_Code "Term"
from FA_SAP_Student_Explaination
</cfquery>
<cfreturn queryConvertForJqGrid(get_student, arguments.page, arguments.rows) />
</cffunction>
<cffunction name="queryConvertForJqGrid" access="package" returntype="struct" output="no">
<cfargument name="get_student" type="query" required="yes" />
<cfargument name="page" type="numeric" required="no" default="1" />
<cfargument name="rows" type="numeric" required="no" default="10" />
<CFSET CurrYear = DateFormat(Now( ), 'yyyy')>
<cfset FallSem = "#CurrYear#30">
<CFSET NextYear = CurrYear + 1>
<cfset PartYear=DateFormat(Now( ), 'yy')>
<cfset PrevYear = #PartYear# - 1>
<cfset NextPart= #partYear# + 1>
<cfset AidYear="#PartYear##NextPart#">
<cfquery name="records" datasource="finaid">
select count(Student_ID) "total" from FA_SAP_Student_Explaination
</cfquery>
<cfset var result = structnew() />
<cfset var rowStruct = structnew() />
<cfset var col = "" />
<cfset result.CURPAGE = arguments.page />
<cfset result.TOTALPAGES = ceiling(arguments.get_student.recordcount/arguments.rows) />
<cfset result.TOTALROWS = arguments.get_student.recordcount />
<cfset result.DATA = arraynew(1) />
<cfoutput query="arguments.get_student" startrow="#(arguments.page-1)*arguments.rows+1#" maxrows="#records.total#">
<cfset rowStruct = structnew() />
<cfset rowStruct.rowid = currentrow />
<cfloop list="#lcase(arguments.get_student.columnlist)#" index="col">
<cfif col eq "studentid">
<cfquery name="get_banner" datasource="UCM_Prod">
select SPRIDEN_LAST_NAME "Last", SPRIDEN_FIRST_NAME "First"
from SPRIDEN
where SPRIDEN_ID = '#get_student.StudentID#'
order by 1,2
</cfquery>
<cfset rowStruct['studentid'] = get_student.StudentID />
<cfset rowStruct['last'] = get_banner.Last />
<cfset rowStruct['first'] = get_banner.First />
<cfset rowStruct['term'] = arguments.get_student.Term />
<cfset rowStruct['savedate'] = arguments.get_student.SaveDate />
<cfset rowStruct['submitdate'] = arguments.get_student.SubmitDate />
</cfif>
</cfloop>
<cfset arrayappend(result.DATA, rowStruct) />
</cfoutput>
<cfreturn result />
</cffunction>
<cffunction name="banner_stuff" access="remote" returntype="any" returnformat="json" output="false" securejson="false">
<cfargument name="studentid" required="no" default="100082388">
<cfargument name="page" required="no" default="1">
<cfargument name="rows" required="no" default="10">
<cfargument name="sidx" required="no" default="">
<cfargument name="sord" required="no" default="ASC">
<cfquery name="get_student_info" datasource="finaid">
select Explaination, SaveDate, SubmitDate, FA_SAP_Student_Explaination.Term_Code "Term_Code",
CourseName, FA_SAP_Courses.Term_Code "CourseTerm", RepeatInd
from FA_SAP_Student_Explaination, FA_SAP_Courses
where FA_SAP_Student_Explaination.Student_ID = '#arguments.studentid#'
and FA_SAP_Student_Explaination.Student_ID = FA_SAP_Courses.Student_ID
</cfquery>
<cfquery name="get_banner" datasource="UCM_Prod">
select SPRIDEN_ID "StudentID", RTVSAPR_CODE "SAP_Code", RTVSAPR_DESC "SAP_Description"
from SPRIDEN, RTVSAPR, RORSAPR
where SPRIDEN_ID = '#arguments.studentid#'
and (RORSAPR_SAPR_CODE = RTVSAPR_CODE or RORSAPR_SAPR_CODE_CALC = RTVSAPR_CODE)
and RORSAPR_TERM_CODE = '#get_student_info.Term_Code#'
</cfquery>
<cfreturn convertResponseforGrid(get_banner, arguments.studentid, arguments.page, arguments.rows) />
</cffunction>
<<cffunction name="convertResponseforGrid" access="package" returntype="struct" output="no">
<cfargument name="get_banner" type="query" required="yes">
<cfargument name="studentid" required="no" default="100082388">
<cfargument name="page" required="no" default="1">
<cfargument name="rows" default="10">
<cfquery name="get_student_info" datasource="finaid">
select Explaination, SaveDate, SubmitDate, FA_SAP_Student_Explaination.Term_Code "Term_Code",
CourseName, FA_SAP_Courses.Term_Code "CourseTerm", RepeatInd
from FA_SAP_Student_Explaination, FA_SAP_Courses
where FA_SAP_Student_Explaination.Student_ID = '#arguments.studentid#'
and FA_SAP_Student_Explaination.Student_ID = FA_SAP_Courses.Student_ID
</cfquery>
<cfset var result = structnew() />
<cfset var rowStruct = structnew() />
<cfset var col =""/>
<cfset result.CURPAGE = arguments.page />
<cfset result.TOTALPAGES = ceiling(get_student_info.recordcount/arguments.rows) />
<cfset result.TOTALROWS = get_student_info.recordcount />
<cfset result.DATA = arraynew(1) />
<cfquery name="records" datasource="finaid">
select count(*) "total" from FA_SAP_Student_Explaination
</cfquery>
<cfoutput query="get_student_info" startrow="#(arguments.page-1)*arguments.rows+1#" maxrows="#records.total#">
<cfset rowStruct = structnew() />
<cfset rowStruct.rowid = currentrow>
<cfloop list="#lcase(get_banner.columnlist)#" index="col">
<cfset rowStruct['studentid'] = #get_banner.StudentID#>
<cfset rowStruct['SAPCode'] = #get_banner.SAP_Code#>
<cfset rowStruct['SAPDescription'] = #get_banner.SAP_Description#>
</cfloop>
<cfset arrayappend(result.DATA, rowStruct) >
</cfoutput>
<cfreturn result>
</cffunction>
</cfcomponent>
Any suggestions as to what may be causing this error?
Thanks