2
我在我的網格(jqGrid 4.5.2)中使用Form Editing和Inline Editing。當我有一個可編輯的列,然後打開表單時,我確實看到了HTML代碼而不是值。截圖顯示了我的意思。jqGrid表單編輯,HTML代替值在表單域
如果沒有字段對應行中的編輯,一切都很好。我已經讀過某處,我不會一起使用Form
和Inline editing
,但只能隱約記住。但是,實際上所有工作都很好,除了這種特殊情況。
在創建Form Editing
顯示器之前,是否可以將整行重置爲只讀(文本)?其他解決方案?
- 編輯1:奧列格的答案---
我已籤/調試到function restoreInline()
,並注意到兩兩件事:
- 我沒有連續的行ID,而是要像1,2 ,4,9(我的數據庫主鍵)。它們是獨一無二的,但有些數字在兩者之間缺失。因此,條件
if ($t.p.savedRow[i].id == rowid)
未被滿足,並且restoreRow
根本沒有被調用。我不能在ID中有這樣的空白嗎?之前從未發現過這個問題。 - 我做了一個交叉檢查,第一行和id爲「1」。在這種情況下,調用
$($t).jqGrid('restoreRow',rowid)
,但我仍然在我的字段中看到「HTML代碼」。
- 編輯2 -
明確地稱爲beforeShowFormjqGrid('restoreRow',rowid)
,但沒有成功。
我仍然認爲你有id重複的問題。如果你有rowid = 1的網格,那麼你可以嘗試使用'$(「* [id = 1]」)或$(「* [id ='1']」)''而不是'$(「 #1" )'。 '$(「#1」)。length'的值總是<= 1,但是'$(「* [id = 1]」)'會讓你擁有'id =「1」 '。因此,如果存在多個作爲具有'id =「1」''的元素存在的情況,則使用'$(「* [id = 1]」)得到'** all **元素和'$(「* [id = 1]「)。」length「可能大於1. – Oleg
例如,我最近回答了在添加/編輯表單打開和關閉後網格重新加載不工作的問題。問題在於用戶對網格使用了相同的id值('
[The answer](http://stackoverflow.com/a/509965/315935)包含不完美,但非常好的代碼來檢測id重複的問題。 – Oleg
回答
表格編輯應調用內部
restoreInline
(請參閱其代碼here),在初始化編輯表單之前調用restoreRow
作爲行。該函數將在beforeInitData
之後直接調用(請參閱the line)。因此,如果您需要保存行而不是放棄數據,例如您可以在beforeInitData
回調中執行此操作。我想你在網格中有一些id重複。所以
restoreRow
的調用不會恢復數據。另一個可能的原因可能是jqGrid中的一個錯誤,但是你必須調試你的代碼,看看爲什麼restoreInline
函數將不會被調用,或者它爲什麼不能恢復行。來源
2013-07-09 12:23:09 Oleg
將會在一段時間後檢查並報告,我很可能會排除重複ID,我們來看看會發現哪些調試。非常感謝! –
以上更新,認爲這是正確的想法,但不知何故混淆了我。 –
@HorstWalter:數組'$ t.p.savedRow'包含在線編輯方面正在編輯的rowid列表。所以條件'if($ t.p.savedRow [i] .id == rowid)'意味着:「如果當前行(開始表單編輯)正在編輯內聯編輯」。我不能給你更多的提示,因爲你幾乎沒有發佈信息:沒有JavaScript代碼,沒有輸入數據(ID爲1,2,4,9),沒有測試用例。如果你自己沒有解決問題,你應該附上更多信息。 – Oleg
相關問題