2011-04-06 59 views
2

首先...這是我在用。 的JQuery 1.4.4 jQuery的UI 1.8.11 的jqGrid 3.8.2「的jqGrid不是一個功能」網格後載入和工作

這裏是我包括在HTML

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js"></script> 

<script type="text/javascript" src="/resources/default/scripts/jquery/jqGrid/i18n/grid.locale-en.js"></script> 

<script type="text/javascript" src="/resources/default/scripts/jquery/jqGrid/jquery.jqGrid.3.8.2.min.js"></script> 

所有這些腳本的鏈接工作正常。 這是我網格的定義:

$('#adminPermissionsGrid').jqGrid({ 
    url:'/admin/permission/get-permissions', 
    mtype: 'GET', 
    datatype: 'json', 
    jsonReader: { 
     id: 'id', 
     repeatitems: false 
    }, 
    colModel: adminPermissionsColumnModel, 
    pager: '#adminPermissionsPager', 
    rowNum: 50, 
    altRows: true, 
    hidegrid: false, 
    sortname: 'resource', 
    autowidth: true, 
    height: 450, 
    gridview: true, 
    viewrecords: true, 
    caption: translate.admin_table_permission_caption, 
    onSelectRow: function(rowId, status) { 
     populatePermissionForm(rowId); 
    } 
}) 
.navGrid('#adminPermissionsPager',{add:false, edit:false, del:false, search:false, refresh:true}); 

這裏是 「populatePermissionForm()」

function populatePermissionForm(rowId) 
{ 
    //TODO : WTF? Why can't I use jqgrid functions here? 
    var rowData = $('#adminPermissionsGrid').jqGrid('getRowData', rowId); 
    ... 
} 

因此,這裏是我的問題。我用$(document).ready()加載網格。網格按預期工作,其中有大約20行數據。當我點擊我得到的螢火以下錯誤行之一:

$("#adminPermissionsGrid").jqGrid is not a function 

據報道,這條線是罪魁禍首:

VAR rowData = $( '#adminPermissionsGrid')的jqGrid(」。 getRowData',rowId);

我檢查$(「#adminPermissionsGrid」)與螢火蟲又彷彿網格對象附加到它仍然看起來。我花了數小時試圖找到答案。看起來在初始加載後,我不能使用任何網格方法。我有一個哈克變通方法,衝浪電網的DOM,但我不想這樣做...

有什麼想法?

+0

我的精神力量告訴我,你的第一次調用'的jqGrid()'和調用'populatePermissionForm()'的'$()'函數的變化。除了jQuery,你在頁面中使用其他框架嗎? – 2011-04-06 19:23:04

+0

您可以嘗試包括直接在onSelectRow'的'populatePermissionForm'的'代碼,看看你是否有同樣的問題。您還可以嘗試製作可用於重現問題的演示。如果附加地發佈來自服務器的測試JSON響應(你可以捕捉與[提琴手]的數據(http://www.fiddler2.com/fiddler2/)或[螢火蟲](http://getfirebug.com/)) ,可以在沒有任何服務器組件的情況下使用演示。 – Oleg 2011-04-06 20:15:12

+0

嘗試在onSelectRow中包含populatePermissionForm的代碼,但沒有奏效。 @ frederic-hamidi你是精神力量是正確的,如果我從$它改變它爲jQuery它的作品。但是,我沒有使用任何其他框架。所以我必須弄清楚...但感謝讓我開始走正確的道路。 – Bob 2011-04-07 00:15:28

回答

0

罪魁禍首找到了!我使用Zend的ZFDebug插件,它依賴於jQuery。這個插件會自動打開noConflict。沒有在插件切換這個選項,但是當我註釋掉noConflict線......一切正常。

2

我使用noConflict方法得到了同樣的問題的jqGridZfDebug

ZfDebug工具欄加載腳本首先,那麼它首先尋找jQuery的...沒有機會找到它,因爲它自己排在第一位!所以它從google api獲得了舊版本的jQuery,並且問題開始了。

您可以發送到ZfDebug,作爲一種選擇,你希望的jQuery版本的路徑,本地或沒有。在你的application.ini文件中加入:

zfdebug.jquery_path = "/my_path_to_jquery/jquery-xxx.min.js" 

(或者如果你願意的話,作爲引導程序中的一個選項數組的成員)。

相關問題