排序前行的背景颜色为红色,排序后行的背景颜色变成了默认色
排序前行高为30(如),排序后行高变成了默认行高求解
神啊!救救我吧!!
排序前行高为30(如),排序后行高变成了默认行高求解
神啊!救救我吧!!
解决方案 »
- .NET中cs文件中的Page_Load和页面的onload事件的加载顺序
- esc按钮对应的keychar
- Process.GetProcessesByName 远程计算机不存在
- treeview 数据绑定
- 有关C#后台导出EXCEL并后台打印
- saveFileDialog 复制的问题
- IntPtr到底怎么用?
- 如何实现一个排列的算法
- c#winfroms
- C#中SerialPort用ReadExisting()接收数据,字符值在0x80到0xff之间字符被自动转化为0x3f,请问这个怎么处理
- VS2010的脱机MSDN Library在哪里
- Dev的ImageEdit 显示图片(ImageEdit在view的一列中)
我现在用的DataGridViewColumnSortMode.Programmatic
DataGridView.Sort(Column, direction);
在绑好数据后用datagridview控件方法排序是影响到你界面外观变动的原因
这样直接设了有没有用?有用的话,你在后台用属性来控制也应该是可行的。还要查下,是不是默认的css控制了样式
请问排序前和排序后的行有对应关系吗?
protected override void OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e)
{
base.OnColumnHeaderMouseClick(e);
if (e.Button == MouseButtons.Right)
{
TDataGridViewFilter filter = new TDataGridViewFilter(this, e);
this.Controls.Add(filter);
}
#region//自定义编程排序方式
if (e.Button == MouseButtons.Left && this.Columns[e.ColumnIndex].SortMode == DataGridViewColumnSortMode.Programmatic)
{
// 检查已经排序的列
DataGridViewColumn newColumn = this.Columns[e.ColumnIndex];
DataGridViewColumn oldColumn = this.SortedColumn;
ListSortDirection direction; // 判断排序方式
if (oldColumn != null)
{
if (oldColumn == newColumn &&
this.SortOrder == SortOrder.Ascending)
{
direction = ListSortDirection.Descending;
}
else
{
direction = ListSortDirection.Ascending;
oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
}
}
else
{
direction = ListSortDirection.Ascending;
} // 排序
if (newColumn != null)
{
SortedList<string, DataGridViewCellStyle> st1 = new SortedList<string, DataGridViewCellStyle>();
SortedList<string, int> rowheight = new SortedList<string, int>();
foreach (DataGridViewRow row in this.Rows)
{
string guid = null;
foreach (DataGridViewColumn col in this.Columns)
{
guid += row.Cells[col.Name].Value.ToString();
}
st1.Add(guid, row.DefaultCellStyle.Clone());
rowheight.Add(guid, row.Height);
} this.Sort(newColumn, direction);
this.IfReBind = false;
//图标
newColumn.HeaderCell.SortGlyphDirection =
direction == ListSortDirection.Ascending ?
SortOrder.Ascending : SortOrder.Descending;
//重新绑定外观
//this.DefaultCellStyle = st0;
foreach (DataGridViewRow row in this.Rows)
{
string guid = null;
foreach (DataGridViewColumn col in this.Columns)
{
guid += row.Cells[col.Name].Value.ToString();
} row.DefaultCellStyle = st1[guid];
row.Height = rowheight[guid];
}
//重新过滤
this.OnFilterStringChanged(this._FilterString);
}
}
#endregion
}
public partial class TDataGridView : DataGridView
if (e.Button == MouseButtons.Left && this.Columns[e.ColumnIndex].SortMode == DataGridViewColumnSortMode.Programmatic)