在使用 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)