datatable 某行删除后回复

langxiaodi 2008-08-28 11:04:05
dataTable中某行已被标记为删除 ,怎么行号,已备回复

private void btnDel_Click(object sender, System.EventArgs e)
{
if (this.dataGrid1.VisibleRowCount==0)
{
MessageBox.Show("请先添加列名");
return;
}
if (dataGrid1.CurrentRowIndex<0)
{
MessageBox.Show("请先选择一列");
return;
}
DataColumnCollection dcc=dt.Columns;//取得table的列
DataColumn dc=dcc[0];//第一列
DataColumn[] mydc={dc};//转换为可用格式
dt.PrimaryKey=mydc;//主键
string c=dc.ToString();
string s=dataGrid1[dataGrid1.CurrentRowIndex,0].ToString(); //dataGrid的列序号也就是主键的值
DataRow myrow= dt.Rows.Find(s); //找到对应的行
deleteRowIndex=dataGrid1.CurrentRowIndex;
在这里记下myrow在dataTable中的行号
MessageBox.Show(deleteRowIndex.ToString()); myrow.Delete();//标记为删除
dataGrid1.Refresh();//更新dataGrid
}

private void btnCan_Click(object sender, System.EventArgs e)
{
dt.Rows[deleteRowIndex].RejectChanges();//回复删除
dataGrid1.Refresh();
}

还有2.回复后是不是显示在原来的位置,例如原来在dataGrid的第一行,撤销删除后还是第一行
3.如果想执行多次的回复是不是弄个ArrayLIst 一次记录删除的行号即可;
4.我看到有个datatable.ImportRow(DataRow)//可将dataRow赋值到datatable中,且保持任何属性设置及初始值和当前值 是不是回复的时候也可以用这个,代替dt.Rows[deleteRowIndex].RejectChanges();

菜鸟问题比较多,希望大家不吝赐教

...全文
214 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
langxiaodi 2008-08-31
  • 打赏
  • 举报
回复
使用栈的确是个好办法
GhostAdai 2008-08-29
  • 打赏
  • 举报
回复
看了半天,终于明白了“回复”==“恢复”
GT7466 2008-08-28
  • 打赏
  • 举报
回复
咳咳
zzyhuian06142 2008-08-28
  • 打赏
  • 举报
回复
不是不帮你,而是完全看不明白你在说什么,咳
spgoal 2008-08-28
  • 打赏
  • 举报
回复
你试试用Stack<int>把你删除的行号入栈
在外部声明
private Stack<int> skDeleteRow;

构造函数的时候初始化
然后在

private void btnDel_Click(object sender, System.EventArgs e)
{
…………………………
//deleteRowIndex=dataGrid1.CurrentRowIndex;
改成:skDeleteRow.Push(dataGrid1.CurrentRowIndex);
…………………………
}



然后恢复的时候出栈
private void btnCan_Click(object sender, System.EventArgs e)
{
dt.Rows[deleteRowIndex].RejectChanges();//回复删除
dataGrid1.Refresh();
}
改成

private void btnCan_Click(object sender, System.EventArgs e)
{
if(skDeleteRow.Count>0){
dt.Rows[skDeleteRow.pop()].RejectChanges();//回复删除
dataGrid1.Refresh();
}
}
jack20my 2008-08-28
  • 打赏
  • 举报
回复
没看明白
阿牛138588 2008-08-28
  • 打赏
  • 举报
回复
参考datatable.AcceptChanges();及datatable.RejectChanges ()
langxiaodi 2008-08-28
  • 打赏
  • 举报
回复
回复5楼 我的不是从数据中提取的,而是自己建的DataTable,
已经搞定了 恢复上一次的操作
不是是使用复制的方法 DataTable.copy()
但是只能恢复前一次的操作,想象word中那么撤销还是不行,
请指点
OOQQOO 2008-08-28
  • 打赏
  • 举报
回复
dt.Rows[deleteRowIndex].RejectChanges();//回复删除
spgoal 2008-08-28
  • 打赏
  • 举报
回复
怎么要搞那么复杂,你恢复就重新从数据库里取一遍就行了吧
langxiaodi 2008-08-28
  • 打赏
  • 举报
回复
用delete 就是标记datbale中该行为删除但不删除
但是撤销的时候怎么做,不知道该行号没有办法做啊
dt.Rows[deleteRowIndex].RejectChanges();//回复删除
sjm2003 2008-08-28
  • 打赏
  • 举报
回复
似乎可以弄个标志来标明是否有需要被删除,但并不删除,而只是不显示该条已被标示的数据。撤消删除时,取消标示即可

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧