datagrid 编辑排序功能的实现
2007-05-31 10:58
453 查看
先放置一个隐藏的textbox, 并设置两个变量标记一下:
private bool inteditmode=false;
private bool intupdatemode=false;
..............
.............
//数据排序
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
DataGrid.HitTestInfo hittest=dataGrid1.HitTest(e.X,e.Y);
if(hittest.Type==DataGrid.HitTestType.ColumnHeader)
{
txtedit.Visible=false;
inteditmode=false;
intupdatemode=false;
DataTable datatable =(DataTable)dataGrid1.DataSource;
DataView dataview =datatable.DefaultView;
string columnname=datatable.Columns[hittest.Column].ColumnName;
if(dataview.Sort==columnname)
dataview.Sort=columnname+"DESC";
else
dataview.Sort=columnname;
}
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
}
//数据编辑
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
inputPanel1.Enabled=true;
try
{
if(!intupdatemode)
{
if(inteditmode && !dataGrid1.CurrentCell.Equals(editcell))
{
intupdatemode=true;
dataGrid1.Visible=false;
DataGridCell currentcell =dataGrid1.CurrentCell;
dataGrid1[editcell.RowNumber,editcell.ColumnNumber]=txtedit.Text;
dataGrid1.CurrentCell=currentcell;
dataGrid1.Visible=true;
intupdatemode=false;
txtedit.Visible=false;
inteditmode=false;
}
editcell=dataGrid1.CurrentCell;
txtedit.Text =(string)dataGrid1[editcell.RowNumber,editcell.ColumnNumber];
Rectangle cellpos=dataGrid1.GetCellBounds(editcell.RowNumber,editcell.ColumnNumber);
txtedit.Left=cellpos.Left-1;
txtedit.Top =cellpos.Top +dataGrid1.Top-1;
txtedit.Width=cellpos.Width+2;
txtedit.Height=cellpos.Height+2;
txtedit.Visible=true;
inteditmode=true;
count();
}
}
catch(Exception e3)
{
MessageBox.Show(e3.Message);
inputPanel1.Enabled=false;
}
}
private bool inteditmode=false;
private bool intupdatemode=false;
..............
.............
//数据排序
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
DataGrid.HitTestInfo hittest=dataGrid1.HitTest(e.X,e.Y);
if(hittest.Type==DataGrid.HitTestType.ColumnHeader)
{
txtedit.Visible=false;
inteditmode=false;
intupdatemode=false;
DataTable datatable =(DataTable)dataGrid1.DataSource;
DataView dataview =datatable.DefaultView;
string columnname=datatable.Columns[hittest.Column].ColumnName;
if(dataview.Sort==columnname)
dataview.Sort=columnname+"DESC";
else
dataview.Sort=columnname;
}
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
}
//数据编辑
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
inputPanel1.Enabled=true;
try
{
if(!intupdatemode)
{
if(inteditmode && !dataGrid1.CurrentCell.Equals(editcell))
{
intupdatemode=true;
dataGrid1.Visible=false;
DataGridCell currentcell =dataGrid1.CurrentCell;
dataGrid1[editcell.RowNumber,editcell.ColumnNumber]=txtedit.Text;
dataGrid1.CurrentCell=currentcell;
dataGrid1.Visible=true;
intupdatemode=false;
txtedit.Visible=false;
inteditmode=false;
}
editcell=dataGrid1.CurrentCell;
txtedit.Text =(string)dataGrid1[editcell.RowNumber,editcell.ColumnNumber];
Rectangle cellpos=dataGrid1.GetCellBounds(editcell.RowNumber,editcell.ColumnNumber);
txtedit.Left=cellpos.Left-1;
txtedit.Top =cellpos.Top +dataGrid1.Top-1;
txtedit.Width=cellpos.Width+2;
txtedit.Height=cellpos.Height+2;
txtedit.Visible=true;
inteditmode=true;
count();
}
}
catch(Exception e3)
{
MessageBox.Show(e3.Message);
inputPanel1.Enabled=false;
}
}
相关文章推荐
- 以较少代码实现DataGrid的排序,翻页,删除等功能 【1】
- EasyUI DataGrid 实现单行/多行编辑功能
- Editable DataGrid 实现列表新增编辑功能
- 以较少代码实现DataGrid的排序,翻页,删除等功能【2】
- 哦哦哦,ASPX实现DataGrid的编辑功能真不容易哦!
- 一段实现DataGrid的“编辑”、“取消”功能脚本,目的是不产生页面刷新
- DataGrid分页显示与DataGride实现排序功能
- 一段实现DataGrid的“编辑”、“取消”功能脚本,目的是不产生页面刷新
- [VB.NET]利用vb.net创建一个完全可编辑的DataGrid,从而实现操作Access数据库进行增,删,改的功能,前提是不用任何其他的Button
- 动态创建DataGrid 列排序功能的实现
- easyui的datagrid用js插入数据等编辑功能的实现
- 手工实现GridView排序、删除、编辑、新增数据功能
- 一段实现DataGrid的“编辑”、“取消”功能脚本,目的是不产生页面刷新
- 手工实现GridView排序、删除、编辑、新增数据功能
- subGrid实现内外datagrid都可编辑功能
- 实现了选择、跳页、排序、导出EXCEL等功能的自定义DataGrid(原码)
- 实现datagrid编辑功能需要设置DataKeyField属性的值
- easyui-edatagrid.js实现回车键结束编辑功能
- (VB.net) 利用DataGrid实现查找, 编辑, 修改, 更新, 删除的功能。
- easyui-edatagrid.js实现回车键结束编辑功能的实例