日期:2014-05-19  浏览次数:20518 次

使用datagrid出现一个奇怪的问题
我用datagrid绑定数据,在按纽列添加“删除”列,为deleteCommand写代码,可是运行后点“删除”老没反应,在dgrd_DeleteCommand函数里下断点也没能断下来。
不过连续快速点击很多次“删除”却能正常执行删除,真晕,不知为什么?
我新建一网页,重复操作,还是出现上面的问题(只是一个简单的测试例子)


namespace   sql
{
///   <summary>
///   WebForm3   的摘要说明。
///   </summary>
public   class   WebForm3   :   System.Web.UI.Page
{
protected   System.Web.UI.WebControls.DataGrid   dgrd;

DataSet   ds   =   new   DataSet();//定义一个结果集
string   cfg= "server=(local);database=sql;uid=sa;pwd=123 ";

private   void   Page_Load(object   sender,   System.EventArgs   e)
{
if   (!IsPostBack)
{
this.my_data_bind();
}                        
}

#region   Web   窗体设计器生成的代码
override   protected   void   OnInit(EventArgs   e)
{
//
//   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   InitializeComponent()
{        
this.dgrd.DeleteCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgrd_DeleteCommand);
this.Load   +=   new   System.EventHandler(this.Page_Load);

}
#endregion

public   void   my_data_bind()
{      

SqlConnection   sqlconn   =   new   SqlConnection(cfg);//把连接赋予定义的sqlconn这个连接
SqlDataAdapter   sda   =   new   SqlDataAdapter( "select   *   from   book ",sqlconn);//执行数据库操作
sda.Fill(ds);//填充定义好的结果结
sqlconn.Open();   //打开数据库
dgrd.DataSource   =   ds;//把这个结果集赋予DataGrid1
dgrd.DataBind();   //帮顶这个DataGrid1
sqlconn.Close();   //关闭数据库  
}

private   void   dgrd_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)
{
int   spid   =   int.Parse(e.Item.Cells[0].Text);
SqlConnection   sqlconn   =   new   SqlConnection(cfg);//把连接赋予定义的sqlconn这个连接

sqlconn.Open();
string   cmdText= "delete   from   book   where   id= "+spid;

SqlCommand   cmd=new   SqlCommand(cmdText,sqlconn);
cmd.ExecuteNonQuery();
sqlconn.Close();
my_data_bind();


}
}
}


------解决方案--------------------
我试过了,我的行的。说明不是代码问题,你机子的问题。