vb.net - 按十进制对 DataGridView 进行排序
问题描述
我知道有很多这样的帖子存在,但我找不到正确的解决方案。我需要按升序对datagridview的第一列进行排序。但排序顺序是错误的。第一列是主键,包含十进制值。
下面是我的示例代码。我试图在填充列后更改数据类型,但它不起作用。
Imports System.Data.SQLite
Public Class Form1
Dim conn As SQLiteConnection
Dim da As SQLiteDataAdapter
Dim table As New DataTable
Dim cmdbl As SQLiteCommandBuilder
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Const filename As String = "database.db"
conn = New SQLiteConnection("Data Source=" & filename & ";Version=3;")
conn.Open()
Dim sql As String = "select * from 'item_rate' ORDER BY 'SL NO' ASC"
da = New SQLiteDataAdapter(sql, conn)
da.Fill(table)
DataGridView1.DataSource = table
DataGridView1.Columns(0).CellTemplate.ValueType = GetType(Decimal)
DataGridView1.Sort(DataGridView1.Columns(0), 0)
End Sub
解决方案
我终于找到了解决方案。不要更改 DGV 的列数据类型,而是更改 DataTable 的列数据类型。为此,您需要克隆 DataTable 并更改列 Datatype。一旦表格填满数据,您就无法更改数据类型。下面是示例代码。
Imports System.Data.SQLite
Public Class Form1
Dim conn As SQLiteConnection
Dim da As SQLiteDataAdapter
Dim table As New DataTable
Dim cmdbl As SQLiteCommandBuilder
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Const filename As String = "database.db"
conn = New SQLiteConnection("Data Source=" & filename & ";Version=3;")
conn.Open()
Dim sql As String = "select * from 'item_rate'"
da = New SQLiteDataAdapter(sql, conn)
da.Fill(table)
'clone the DataTable to change the data type of a column for sorting
Dim dtCloned As DataTable = table.Clone()
dtCloned.Columns(0).DataType = GetType(Single) 'Assign the first column to decimal type AKA Single
For Each row As DataRow In table.Rows
dtCloned.ImportRow(row)
Next
'End Of Clone Table
'Assign cloned table to DGV
DataGridView1.DataSource = dtCloned
'Sort DGV
DataGridView1.Sort(DataGridView1.Columns(0), 0)
End Sub
推荐阅读
- c# - 如何在没有 IIS 的情况下将 Shibboleth 登录与 ASP.NET MVC 集成
- google-cloud-platform - OAuth 用户上限 - 删除测试用户
- data-visualization - LodLive 可视化 GraphDB 端点
- java - 并行运行 Cucumber 场景时可以重用驱动程序实例吗?
- python - python - 在熊猫中使用条件时调用函数时出现问题
- python - 通过 2 个 API 调用获取 RANDOM YouTube API 数据
- r - 如何通过在 R 中按 ID 和特定列算术分组来删除行?
- python - PyMuPDF ModuleNotFoundError
- python - 矩形相互碰撞
- apache - Apache HTAccess 未将 HeaderName 和 FooterName 应用于索引