2014-01-15 22 views
2

我用帶過濾器菜單的kendo網格書寫html/javascript頁面。我遇到了以下問題:將新對象添加到數據源(新行)並重新加載它(數據源.read)時,我丟失了輸入值的過濾器菜單中的文本框值。丟失過濾器菜單中的文本框值

以下是演示:http://jsfiddle.net/3qT3J/2/

$("#grid").kendoGrid({ 
    dataSource: datasource1, 
    height: 300, 
    filterable: true // <== shows a button on each column that display a filter menu 

}); 
// reload the grid every 2 seconds: 
setInterval(function() { 
     datasource1.read(); 
}, 2000); 

有什麼辦法當電網重新加載重新填寫文本框?我怎樣才能得到用戶輸入的值?是否有一些kendogrid屬性避免在重新加載網格時丟失值?

我以爲在文本框中使用事件偵聽器來獲取值,但我不知道文本框屬於哪個列......我使用以下代碼添加了事件偵聽器: $(「。k-文本框「)。on(」click change「,function1);

有什麼想法? 感謝

+0

嘗試創建一個演示(的jsfiddle/jsbin/plnkr); dataSource.read()不會刪除過濾器 –

+0

是的,dataSource.read()不會刪除我的過濾器,但會刪除用戶在圖形界面中寫入的內容。當用戶打開過濾器菜單並開始輸入某個值時,在調用datasource.read()時該值將被清除。我每1秒調用一次dataSource.read()。我會在幾分鐘內寫出演示文稿併發布,謝謝。 – paulalopesfc

+0

拉斯,我在上面的消息中添加了一個演示鏈接。謝謝。 – paulalopesfc

回答

1

你可以暫停重裝而過濾器菜單打開,以便用戶可以完成的打字:

setInterval(function() { 
    var pauseRefresh = $(".k-filter-menu:visible").length; 
    if (!pauseRefresh) { 
     datasource1.read(); 
    } 
}, 2000); 

demo

+0

作爲解決方法,我已經停止並啓動了過濾器菜單的mouseenter和mouseleave事件偵聽器上的datagrid重新加載。例如:「$('form.k-filter-menu')。mouseenter(function ...)」。但是你的解決方案更好。非常感謝你。 – paulalopesfc

+0

不用客氣;因爲你是一個新成員:如果答案是helfpul,你應該考慮提高它(使用在帖子左邊的箭頭),如果你的問題解決了,你應該[接受答案](http:// meta.stackexchange.com/a/5235) –