gridview删除问题

wosizy 2009-08-27 09:19:01
//循环 GridView
for (int i = 1; i < this.grv_OrderDisp.Rows.Count; i++)
{
//获取 CheckBok 控件
chk = (CheckBox)this.grv_OrderDisp.Rows[i].FindControl("chk_Item");
//如果控件为选中
if (chk.Checked)
{
dt_CtrtDetl.Rows[i].Delete();//删除选中行
}

}
this.grv_OrderDisp.DataSource = dt_CtrtDetl;
this.grv_OrderDisp.DataBind();

这段代码获取CheckBok的状态为钩时点击按钮删除才能删除一行,循环从1开始 也就是第一行不能删,最低保留一行。
现在问题来了· 当我在第一行CheckBok打钩时删除不了·其他行打钩删除可以
我想要的效果是 CheckBok随便打钩删除 但是最低要保留一行不能删 也就是不管你删那一行 反最后要保留一行
请大家多多指教· 谢了。
...全文
67 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wosizy 2009-08-28
  • 打赏
  • 举报
回复
回8楼
DataRowCollection.RemoveAt
DataRowCollection没有RemoveAt 这个属性
还是不行··
spark_wu 2009-08-27
  • 打赏
  • 举报
回复
先得到总共有多少个有checkbox选中
简单点
if(checkbox选中个数!= girdview数据行行数)
{
删除
}
wuyq11 2009-08-27
  • 打赏
  • 举报
回复
datatable.Rows.RemoveAt(i)
DataRowCollection.RemoveAt
wh_wangjun 2009-08-27
  • 打赏
  • 举报
回复
int delrows=0; //删除行数量
int allrows= this.grv_OrderDisp.Rows.Count-1;//第一行是标题行
for (int i = 1; i < this.grv_OrderDisp.Rows.Count; i++)
{
//获取 CheckBok 控件
chk = (CheckBox)this.grv_OrderDisp.Rows[i].FindControl("chk_Item");
//如果控件为选中
if (chk.Checked)
{
delrows++;//删除行数量+1
}

}
if (delrows=allrows) then delrows--;//如果须要删除行等于总行数,则删除行-1

for (int i = 1; i < this.grv_OrderDisp.Rows.Count; i++)
{
//获取 CheckBok 控件
chk = (CheckBox)this.grv_OrderDisp.Rows[i].FindControl("chk_Item");
//如果控件为选中
if (chk.Checked && delrows>0)
{
dt_CtrtDetl.Rows[i].Delete();//删除选中行
delrows--;
}

}
this.grv_OrderDisp.DataSource = dt_CtrtDetl;
this.grv_OrderDisp.DataBind();
wosizy 2009-08-27
  • 打赏
  • 举报
回复
dt_CtrtDetl 是一个DataTable
wosizy 2009-08-27
  • 打赏
  • 举报
回复
回二楼 dt_CtrtDetl.Removeat(i); dt_CtrtDetl 点不出Removeat 没这个属性
Richard345265669 2009-08-27
  • 打赏
  • 举报
回复
二楼三楼的正解
小_虎 2009-08-27
  • 打赏
  • 举报
回复
wuyq11 2009-08-27
  • 打赏
  • 举报
回复
Delete()之后需要datatable.AccepteChanges()方法确认完全删除参考
wuyq11 2009-08-27
  • 打赏
  • 举报
回复
for (int i = 0; i < this.grv_OrderDisp.Rows.Count; i++)
{
chk = (CheckBox)this.grv_OrderDisp.Rows[i].FindControl("chk_Item");
if (chk.Checked)
{
dt_CtrtDetl.Removeat(i);
}
}
this.grv_OrderDisp.DataSource = dt_CtrtDetl;
this.grv_OrderDisp.DataBind();
要用removeat或者remove方法。
要用delete方法的话要在delete前面加一个状态判定

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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