2013-01-23 41 views
1

我有這樣的代碼,它工作正常,如果在IgGrid control細胞正在編輯:Infragistics的網格滾動發行

var verticalContainer = $("#BookLabor_scrollContainer"); 
var topPos = verticalContainer.scrollTop(); 
$("#BookLabor").igGrid("option", "dataSource", blankLaborDS); 
$('#BookLabor').igGrid('dataBind'); 
verticalContainer.scrollTop(topPos); 

然而,當我使用IgDialog,我有彈開上有一個網格單元按鈕單擊事件,這不是滾動回行正在編輯:

var verticalContainer = $("#BookLabor_scrollContainer"); 
var topPos = verticalContainer.scrollTop(); 
$("#BookLabor").igGrid("option", "dataSource", blankLaborDS); 
$('#BookLabor').igGrid('dataBind'); 
verticalContainer.scrollTop(topPos); 

沒有爲IgGrid一個虛擬滾動的方法,但在在線文檔沒有詳細說明如何使用它。

有什麼技巧,提示,所有你的提示Infragistics專家在那裏?

+0

我在第二部分忘了一行代碼。就在verticalContainer.scrollTop調用之前,我關閉了IgDialog。 – user1864392

回答

1

滾動相關的API是很基本的,你所使用的是相當多的可比性:

  • .igGrid("scrollContainer")僅僅是一種速記,這樣你就不必使用#BookLabor_scrollContainer(它是一個內部ID)
  • .igGrid("virtualScrollTo", scrollContainerTop);就像使用虛擬滾動時的滾動頂部一樣,您可能會使用虛擬滾動(無需更多代碼就無法分辨),因此您可能需要嘗試一下。

但是,是否有理由在單元編輯後調用dataBind? (我很難找到一個場景)。它無意以任何方式使用,並且在數據量更大的情況下會產生大量開銷。如果您需要更新單元格的值,你應該使用更新的API,不需要重新綁定,且不需要爲well..see後滾動: http://help.infragistics.com/jQuery/2012.2/ui.iggridupdating#methods

至於對話的更新再次提供了一個排內部使用對話框的模板,我強烈建議如果行編輯可以接受。示例: http://www.infragistics.com/products/jquery/sample/grid/row-edit-template

+0

我在等待Infragistics支持人員回覆關於如何使用虛擬滾動查看是否可以解決問題的信息。我們使用我們的交互式網格來重新綁定數據源的原因(其中一些是基於在其他列中輸入的內容來計算一列的值),因爲我們在編輯時在列中的單元格上設置值時遇到列空白問題格。只要我們更新我們的數據源(它只是一個JSON類型的javascript數組),然後重新綁定到數據源,我們就沒事了。 – user1864392

+0

當試圖再次綁定到控制器/操作後渲染時,我們也遇到了IQueryable對象的問題。而不是獲得預期的結果,網格會顯示控制器/操作的名稱,在每列中每行一個字符。 – user1864392

+0

好的,下面是另一個問題,它對我們的用戶羣來說實際上更重要:我們有一些命令按鈕(它們是網格單元格的標準控件的一部分),它用過濾列表打開IgDialogs,但是 - 如果它們正在編輯單元格在同一行的另一列中,然後用鼠標點擊其中一個按鈕(我們有一些處理程序用於處理iggridupdatingeditcellended,這實際上應該不重要),但我們在Infragistics.js中發現了致命的運行時錯誤。 – user1864392