2014-10-30 55 views
1

我有一些網頁,我有一個kendo UI網格(有線連接到完整的CRUD服務),但使用單獨的Kendo UI工具欄控件(而不是網格中的工具欄配置本身)。我在工具欄上有許多不同的按鈕/菜單,但在網格上調用saveChanges()時會看到奇怪的行爲。如果在單擊保存按鈕時正在編輯單元格,則會保存網格,但編輯後的值會丟失(它將恢復到原來的位置)。下面詳細介紹了我在不同的場合看到:Kendo UI工具欄和網格 - 當從工具欄控件觸發時出現奇怪的保存行爲

  1. 當使用網格(命令:「保存」)構成的保存按鈕,在細胞中的任何改變正在編輯致力於與保存。
  2. 當使用調用網格的saveChanges()方法的純HTML按鈕時,正在編輯的單元格中的任何更改都將與保存一起提交。
  3. 使用在工具欄控件中配置的保存按鈕時,正在編輯的單元格中的更改在調用saveChanges()時爲LOST。

下jsbin顯示所有三種行爲:

http://jsbin.com/jazobexatu/2/edit?html,js,output

我已經打過電話,從工具欄按鈕保存了許多不同的方式(甚至試圖觸發的單擊事件外部按鈕),但似乎沒有任何更正行爲。我也嘗試在網格上調用closeCell()(試圖強制將值返回到數據中,但這也不起作用)。我還沒有能夠調試JavaScript足以找出什麼是不同的。我希望對這些控制有更深入瞭解的人可以幫助我。

回答

0

由於某些原因,工具欄按鈕上的鼠標按下事件不會導致編輯器模糊。

您可以通過單擊單元格進行編輯,然後單擊並按住「常規」按鈕上的鼠標按鈕來嘗試。編輯器在鼠標關閉時關閉,導致編輯器模糊不清,並堅持更改。

如果您執行同樣的操作,請在工具欄按鈕上單擊並按住鼠標,編輯器保持打開狀態。

我一直在探索源代碼,但還沒有弄清楚爲什麼發生這種情況。我最好的猜測是,工具欄上的mousedown處理程序會阻止事件冒泡或運行其默認操作,並且編輯器不會模糊。


附加細節:在網格上的標題按鈕和普通按鈕,聚焦元件的變化(這是什麼原因造成的編輯模糊)鼠標按下。但是在工具欄按鈕上,編輯器輸入元素仍然是焦點。

將焦點轉移到工具欄的mousedown上可能是一種解決方法。


排序怪異的黑客,但這部作品在Chrome瀏覽器(任何應在支持activeElement

click: function (e) { 
    $(document.activeElement).blur(); 
    $("#grid").data("kendoGrid").saveChanges(); 
} 
+0

真棒任何瀏覽器我一直在尋找這樣一個黑客 - 只是不知道如何讓它自己發生,謝謝! – 2014-11-01 12:45:15