我有一個DataTable,它包含來自SQL Server查詢的10000多行。數據表被用作數據源爲一個DataGridView,像這樣(簡化代碼):限制使用DataSource時顯示在DataGridView中的行
MyBindingSource = New BindingSource(MyDataTable, Nothing)
MyDataGridView.DataSource = MyBindingSource
作爲這需要looong時間來加載,我想限制在DataGridView顯示的行數,不知何故。
我不能在我的查詢中使用TOP
,因爲我需要DataTable中存在的所有數據以便稍後進行過濾,而無需重新設置數據源(MyBindingSource.Filter = MyFilter
)。
此外,我無法使用Filter
屬性來限制行數,因爲查詢結果中沒有相關數據可用於此目的。爲了解決這個問題,我想過將TSQL的ROW_NUMBER
添加到查詢結果(MyBindingSource.Filter = "[RowNumberField] < 100"
)中,但只有在過濾器中沒有使用其他字段時才能使用。
任何想法?
選中此[在Windows窗體DataGridView控件中實現虛擬模式](https://msdn.microsoft.com/zh-cn/library/15a31akc.aspx) – Fabio
我在查找解決方案時遇到了該文章,但對於這樣一個看起來很簡單的任務似乎有很多模糊...... –
你確定「瓶頸」是「datagridview」而不是你的SQL查詢嗎? – Fabio