GridView.RowDeleting 事件

时间: 2008-04-22 / 分类: 学习心得 / 浏览次数: 4,075 / 0个评论 发表评论

一大早起来编程序,在经过慎重选择之后用HyperLink解决了RowEdit的问题。可是接着出现了一个删除操作的问题,无论我如何修改、设置,总是提示我:激发了未处理的事件RowDeleting”。即使我把自带的CommandField删除按钮换作我自己添加的ButtonField删除按钮,同样都定义了RowDeleting事件,可是问题依然如此,反复出现这样的提示。

微软的MSDN上面提供了相应的事件介绍,还有事例程序代码,可是即使我按照上面的代码写,依然还是这个错误,好像根本找不到我定义的函数。

——————————-

  voidCustomersGridView_RowDeleting(Object sender, GridViewDeleteEventArgs e)
 
{    

    // Cancel the delete operation if the user attempts to remove
    // the last record from the GridView control.
    if (CustomersGridView.Rows.Count <= 1)
   
{        
     e.Cancel = true;
     Message.Text = You must keep at least one record.;            
}    
  }

——————————–

google了一下,发现遇到同样问题的还是挺多的,基本上情况和我相同,都不是用直接绑定ObjectDataSource数据源的方式,而是采用动态绑定数据的。看来不完全用微软的东西就会出问题啊,微软太霸道了。网上的回帖大多都是不了了之,也不知道孰是孰非,反正觉得有用的都记下来吧,也许我真的是犯了很小的错误,就像下面的朋友一样,忘了注册一下而已。

①代码应该没问题,难道事件没有注册
<asp:GridView ID=GridView1 runat=server OnRowDeleting=GridView1_RowDeleting >

②处理方法有2种:
(1)如果你不需要这个事件,那么删除 GridView2.RowDeleting += …..这一行.
(2)如果需要这个事件,则添加处理该事件的方法,

方法的具体格式去查MSDN中关于RowDeleting的帮助.

③private   void  dgShow_DeleteCommand(object   source, System.Web.UI.WebControls.DataGridCommandEventArgs  e)
{
if(dgShow.Items.Count==1)
{
if(dgShow.CurrentPageIndex!=0)
dgShow.CurrentPageIndex   =  dgShow.CurrentPageIndex-1;
}
string   strSql   =  delete   from  tbStudentinfo   where  studentid= +e.Item.Cells[0].Text+ ;
ExecuteSql(strSql);
BindData();

}这是删除的全码

④如果是用Button删除的话,这里就是有Button删除的代码

private   void  btnDelete_Click(object   sender,  System.EventArgs   e)
{
foreach(DataGridItem   dgi   in  dgShow.Items)
{
CheckBox   cb   =  (CheckBox)dgi.FindControl( cbSelect );
if(cb.Checked)
{
//以下执行删除操作
int   nID   =  int.Parse(dgi.Cells[0].Text);
string   strSql   =  delete   from  tbStudentinfo   where  studentid= +nID;
ExecuteSql(strSql);
}
}
dgShow.CurrentPageIndex   =  0;
BindData();
}

把下面的代码

<asp:Button ID=Button3 runat=serverText=删除用户 CommandArgument='<%#DataBinder.Eval(Container.DataItem,UserID)%>’ CommandName=delete />

修改为:

<asp:Button ID=Button3 runat=server Text=删除用户  CommandArgument='<%#DataBinder.Eval(Container.DataItem,UserID) %>’ CommandName=del/>  

commandName属性的值不要等于“delete”就可以了。因为该值(“delete”)是微软的默认值,它默认会触发RowDeleting事件。

历史上的今天

2016年:看电影037(45条评论)

2014年:路易大叔(71条评论)

2012年:快乐星期天202期:幽默语录(39)(87条评论)

2010年:Wiz(为知个人知识管理)正式版发布(64条评论)

2009年:5 Minute Candles,5分钟的浪漫(0条评论)

2009年:使用Outwit搜索网上的文档表格幻灯片和图片[译文51](0条评论)

2009年:5个不用注册即可使用的文件分享网站[译文50](0条评论)

2007年:济南话,你饶了我吧(0条评论)

2006年:鬱悶,有點感冒...(0条评论)

2006年:记录一下昨天的体测(0条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站