C# winform 中datagridview ,如何实现点击列头,对应的列自动排序。
在使用 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;//不能省掉,不然没效果}
C#如何固定Gridview表头
1,样式固定
.Freezing
{
position:relative;
table-layout:fixed;
top:expression(this.offsetParent.scrollTop);
z-index: 10;
}
.Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
2.Javascript方法
//创建表头
if(document.getElementById("gvTitle") == null)
{
var gdvList = document.getElementById("gvCommon");
var gdvHeader = gdvList.cloneNode(true);
for(i = gdvHeader.rows.length - 1; i > 0;i--)
{
gdvHeader.deleteRow(i);
}
document.getElementById("divTitle").appendChild(gdvHeader);
gdvList.deleteRow(0);
//gdvList.rows[0].style.display = 'none';
}
大致做法是利用JS方法Copy出一个表头 gdvHeader 放在一个“divTitle”的DIV中。
GridView是包含在“divGvData”DIV中的,然后设置divTitle的页面位置和divGvData的一致,也就是覆盖在上面。目前发现效果还行。有一点要注意,gdvHeader.id = "gvTitle";要重新设置一个ID,不然删除的还是GridView的数据行。
3.HTML中的部分代码:
4.asp.net方法
protected void InitGridviewHeader(GridView _gv1, Table _tb1, Panel _pc1)
{
//Page.EnableViewState = false;
//[Espa駉l]Copiando las propiedades del renglon de encabezado
//[English]Coping a header row data and properties
_tb1.Rows.Add(_gv1.HeaderRow);
_tb1.Rows[0].ControlStyle.CopyFrom(_gv1.HeaderStyle);
_tb1.CellPadding = _gv1.CellPadding;
_tb1.CellSpacing = _gv1.CellSpacing;
_tb1.BorderWidth = _gv1.BorderWidth;
//if (!_gv1.Width.IsEmpty)
//_gv1.Width = Unit.Pixel(Convert.ToInt32(_gv1.Width.Value) + Convert.ToInt32(_tb1.Width.Value) + 13);
//[Espa駉l]Copiando las propiedades de cada celda del nuevo encabezado.
//[English]Coping each cells properties to the new header cells properties
int Count = 0;
_pc1.Width = Unit.Pixel(100);
for (Count = 0; Count < _gv1.HeaderRow.Cells.Count - 1; Count++)
{
_tb1.Rows[0].Cells[Count].Width = _gv1.Columns[Count].ItemStyle.Width;
_tb1.Rows[0].Cells[Count].BorderWidth = _gv1.Columns[Count].HeaderStyle.BorderWidth;
_tb1.Rows[0].Cells[Count].BorderStyle = _gv1.Columns[Count].HeaderStyle.BorderStyle;
_pc1.Width = Unit.Pixel(Convert.ToInt32(_tb1.Rows[0].Cells[Count].Width.Value) + Convert.ToInt32(_pc1.Width.Value) + 14);
}
//Panel1.Width = Unit.Pixel(Convert.ToInt32(_tb1.Rows[0].Cells[Count-1].Width.Value) + 12);
}
推荐阅读
- ○ CFO总变成CEO这背后是隐藏着什么秘密呢?
- ○ qq估价器在线查询
- ○ 淘宝店铺装修代码大全
- ○ 街拍齐b小短裙
- ○ 苹果12Pro参数
- ○ 淘宝返利网怎么用
- ○ acfun下载
- ○ 斗战神嗜血牛加点
- ○ baidu翻译
- ○ dnf悲叹之塔耳环
最新文章
- ○ CFO总变成CEO这背后是隐藏着什么秘密呢?
- ○ qq估价器在线查询
- ○ 淘宝店铺装修代码大全
- ○ 街拍齐b小短裙
- ○ 苹果12Pro参数
- ○ 淘宝返利网怎么用
- ○ acfun下载
- ○ 斗战神嗜血牛加点
- ○ baidu翻译
- ○ dnf悲叹之塔耳环