[英]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.