2011-07-25 56 views
1

了在這一個很好的提示。這是代碼導致我的悲傷:RecordIndex出來的,我用的DevExpress網格掙扎,有沒有人想知道的範圍

If GridView.Controller.SelectedRecordCount > 0 Then 
Begin 
    CurrentGridRow := GridView.DataController.GetRowID( 
         GridView.Controller.SelectedRecords[ 0 ].RecordIndex); 
End 
Else 
    CurrentGridRow := 0; 

試圖讓行ID,它是正確的,當異常被提出,因爲,這個代碼是在RefreshData方法調用,並有剛剛得到了改變,這使記錄從電網中消失。 因此,我需要解決這個問題的方法是告訴recordindex是否仍然有效。 我看了一下,但我找不到任何有用的東西,谷歌不想 在這一個分享它的好東西。

有沒有人有關於如何確保記錄索引是有效的一個很好的提示?

非常感謝!

安德烈

+0

你可能有更多的成功發佈此向DevExpress的支持論壇.... –

+0

我得到了你可能是正確的感覺,但我一直在公司工作了很短的時間,我不知道是什麼支撐賬戶憑據是,我相信很多知識淵博的人在這裏呆着 - 因此值得一試! –

+0

@Andrea - 我同意Marjan。 DevExpress提供的支持非常好。另請參閱廣泛的演示/知識庫/在線幫助 – Simon

回答

2

通過到DevEx源鑽研一點我可以看到,GetRowID需要一個RowIndex作爲參數,而不是一個RecordIndex爲您傳遞。

RecordIndex是,那麼,在網格的內部數據集的記錄的索引。如視覺所示,RowIndex是記錄的索引。所以你的網格中最頂端的可見行有RowIndex = 0

看着你的代碼我想你想要GetRowIndexByRecordIndex。第一個選定記錄的視覺索引。

+0

應該有一個編程術語,類似的東西覆蓋了從有序類型不匹配,未來的困惑「整數謬論」,其中「這個整數索引值並不意味着你認爲這意味着什麼「。 –

+0

[RecordIndex與微軟的DLL放蕩面值(http://devexpress.com/Support/Center/p/Q33881.aspx);-) –

+0

是的,我已經注意到了,但是這不是我寫的代碼並且我不熟悉DevExpress組件,因此在更改它之前,我必須*絕對且完全確定*我不會破壞其他任何東西 - 而我不是。 –