簡體   English   中英

如何對從添加了行的數據表填充的未綁定DataGridView進行排序?

[英]How do you sort an unbound DataGridView filled from a DataTable with added rows?

我在排序未綁定的DataGridView時遇到了一些麻煩。 我正在從StreamReader填充DataTable,然后將項目從DataTable手動傳輸到DataGridView。 在DataGridView上,AllowUserToAddRows屬性設置為true。

這將填充DataGridView,而不會造成任何麻煩。 我可以通過單擊列標題來對列進行排序,而不會出現任何問題。 如果我在新行的第一列中添加一個值,然后嘗試對該列進行排序,則會收到一條錯誤消息,顯示:“對象必須為String類型。”

我嘗試了將列中的所有單元格轉換為相同數據類型的不同方法,但是無法解決此問題。 我在這里想念什么嗎?

在表單加載事件中,我有以下代碼:

dgvStartingGrid.Columns(0).ValueType = GetType(Integer)

在DataGridView中輸入值之前,我還要確保StreamReader的值是Integer類型:

If IsNumeric(strColumnValue) Then
    dtbFillGrid.Rows(intCurrentRow).Item("Starting Position") = strColumnValue
End If

我也嘗試過:

dtbFillGrid.Rows(intCurrentRow).Item("Starting Position") = CInt(strColumnValue)

是什么導致此問題? 我已經驗證了該列中的所有單元格都具有相同的數據類型,但是它仍然給我一個錯誤,並且我確定是此列是問題所在。

其他列是字符串類型,除非按一下第一列,然后拋出異常,否則按它們的列標題對它們進行排序沒有任何問題。

是的,經過一些測試,我發現了這一點。

即使您將DataGridView列設置為Integer,也並不意味着它將被Integers填充。 除非您更改DataTable的數據類型,否則DataGridView實際上將填充字符串。 DataGridView上的排序功能不是基於列類型,而是基於它找到的第一個值。 並且由於該值是一個字符串,因此當它達到鍵入的值(它是一個整數)時,您會得到一個錯誤。

這就是您要做的。

dtbFillGrid.Columns.Item(0).DataType = GetType(Integer)

其中0是包含Integer的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM