C# winform 中datagridview ,如何实现点击列头,对应的列自动排序。

C# winform 中datagridview ,如何实现点击列头,对应的列自动排序。,第1张

在使用 DataGridView时,对于数值列,默认的排序方式仍然是按照字符串方式进行颤芦

如果需要按照数值型进行排序,有几种办法,其中一种就是重载SortCompare方法

//重载_SortCompare方法

private void DataGridView1_SortCompare(object sender,DataGridViewSortCompareEventArgs e)

{

//   如果是学号或成绩列,则按浮点数处理

if(e.Column.Name=="学号"|| e.Column.Name=="成绩")

{

e.SortResult = (Convert.ToDouble(e.CellValue1) - Convert.ToDouble(e.CellValue2) >0) ? 1 : (Convert.ToDouble(e.CellValue1) - Convert.ToDouble(e.CellValue2) <0)?-1:0

}

//否则,按字符串比卖空较

else

{

e.SortResult = System.String.Compare(Convert.ToString(e.CellValue1), Convert.ToString(e.CellValue2))

}

// 如茄配带果发现两行相同,则按学号排序

if (e.SortResult == 0 &&e.Column.Name != "学号")

{

e.SortResult = Convert.ToInt32(DataGridView1.Rows[e.RowIndex1].Cells["学号"].Value.ToString()) -

Convert.ToInt32(DataGridView1.Rows[e.RowIndex2].Cells["学号"].Value.ToString())

}

e.Handled = true//不能省掉,不然没效果

}

直接颤高姿在属性中设置AllowUserToAddRows 为 False

 Private Sub Form1_Load(ByVal sender As Object, ByVal e 念盯As System.EventArgs) Handles Me.Load

 茄绝       DataGridView1.AllowUserToAddRows = False

    End Sub

   DataGridView中一列一列的绑定(列名存在集合arrList中 数据存在DataTable)

解释 集合(arrList)中存SQL语渗租喊句SELECT中的 名字 转换成DataTable的 列名 //通过集合中的名字创建列名

protected DataTable CreateTable(ArrayList arrList DataReader reader)

// reader可以从ExecuteReader获得

{

// DataTable的名字

DataTable dt = new DataTable( table )

丛野//给DataTable定列名

for (int i = i <arrList Counti++)

{

DataColumn dtColumn = new DataColumn()

dtColumn ColumnName = (string)arrList[i]

dt Columns Add(dtColumn)

}

//往DataTable里加行

DataRow dtRow

while (reader Read())

{

dtRow = dt NewRow()

for (int i = i <arrList Counti++)

{

try

{

dtRow[(string)arrList[i]] = reader GetValue(i) ToString()

}

catch

{

dtRow[(string)arrList[i]] = System DBNull Value

}

}

dt Rows Add(dtRow)

}

return dt

}

DataTable m_listViewInfo = CreateTable(集合名 DataReader名)

//将DataTable绑定到DataView中

DataView dvListViewInfo = new DataView(m_listViewInfo)

dataGridView Columns Clear()

//取消dataGridView 按默认方式显示

dataGridView AutoGenerateColumns = false

//绑定DataView到dataGridView上

dataGridView DataSource = dvListViewInfo

DataGridViewTextBoxColumn dtcTimeStamp = new DataGridViewTextBoxColumn()

dtcTimeStamp DataPropertyName = TIMESTAMP //SQL语句得型肆到的列名 可从集合中获得dtcTimeStamp HeaderText = 日期 //列头显示的汉字dtcTimeStamp Width =

lishixinzhi/Article/program/net/201311/11429


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12320153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存