2010-06-09 60 views
0

是否nybody知道如何限制用戶可以在MultiSelect活動的cxGrid中選擇的行數?在cxGrid(Developer Express)中限制MultiSelect的可選行

網格工作在GridMode = True - 因爲數據量非常大(200.000行)。 - 現在,如果按CTRL + A,所有行都會加載,因爲網格要全部選中它們。

任何tipps?

謝謝

+1

嗨,JPS!歡迎來到StackOverflow。很好的問題。這個看起來好像會變得很愚蠢。 CX網格是我曾經使用過的最不可思議的千層麪代碼之一,如果不深入研究大量的源代碼來試圖找到實際功能,那幾乎不可能用它做任何有用的工作。 – 2010-06-09 13:08:57

+2

千層麪?更像是一個裝滿洋蔥的籃子 - 很多不同的東西,你可以一層一層地剝離,有時候你會覺得哭。 ;-) – 2010-06-09 16:10:13

+0

cxDBData.pas:procedure TcxDBDataSelection.SelectAll; 這就是行動的地方..看着循環,我認爲沒有事件可以取消加載所有行。 - 可能在canselectrow事件中放棄會有所幫助,我會讓你們知道。 – JPS 2010-06-11 06:38:20

回答

0

的一種方法是通過創建一個快捷方式,將搶佔其停用按Ctrl-A在你的表格。只是一個想法,但它應該工作。

+0

這絕對是一個工作,但由於我試圖創建一個組件(派生形式cxgrid),我們可以在我們的應用程序的任何地方使用我真的很想找到一種方法來解決這個組件內部。 – JPS 2010-06-11 06:27:33

1

在CanSelectRecord事件試試這個 -

if Sender.Controller.SelectedRecordCount > x then 
    AAllow := False; 

的 'x' 是你想要的限制。

+0

在Gridmode False這工作perfeclty(但不是必須的,因爲strg + a是沒有問題的) - 現在在Gridmode真的事件仍然經常被調用(我asume每行),但「SelectedRecordCount」不幸地停留在零。 仍然該事件可能是一個很好的開始。也許我會發現一個計數器在數據結構中的某處 - 或者當strg + a被按下時我可以開始自己的計數。 – JPS 2010-06-11 06:16:07

+0

我只是在事件中做了我自己的計數..它不會解決問題,因爲是的,我可以禁止選擇每一行。 - 但這並不能阻止選擇過程。 - cxGrid繼續遍歷所有行並嘗試選擇它們。 (所以,所有的東西都會被加載,而且會一直持續) – JPS 2010-06-11 06:22:28