首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

datagrid 删除和更新解决方案

2012-01-28 
datagrid 删除和更新程序如下:protectedvoiddgd_users_DeleteCommand(objectsource,DataGridCommandEventA

datagrid 删除和更新
程序如下:
  protected   void   dgd_users_DeleteCommand(object   source,   DataGridCommandEventArgs   e)
        {
                string   strconn   =   "server=localhost;uid=sa;pwd=sa;database=购物 ";
                SqlConnection   cn   =   new   SqlConnection(strconn);
                cn.Open();
                SqlCommand   cm   =   new   SqlCommand( "UserDelete ",   cn);
                cm.CommandType   =   CommandType.StoredProcedure;
                cm.Parameters.Add( "@UID ",   SqlDbType.VarChar);
                cm.Parameters[ "@UID "].Value   =   e.Item.Cells[0].Text.ToString();
                cm.ExecuteNonQuery();
                dgd_users.EditItemIndex   =   -1;
                BindGrid();
        }

  protected   void   dgd_users_UpdateCommand(object   source,   DataGridCommandEventArgs   e)
        {
                string   strconn   =   "server=localhost;uid=sa;pwd=sa;database=购物 ";
                SqlConnection   cn   =   new   SqlConnection(strconn);
                cn.Open();
                string   mysql   =   "update   Users   set   UPower=@UPower   where   UID=@UID ";
                SqlCommand   cm   =   new   SqlCommand(mysql,   cn);
                cm.Parameters.Add( "@UPower ",   SqlDbType.Int);
                cm.Parameters.Add( "@UID ",   SqlDbType.VarChar);
                cm.Parameters[ "@UPower "].Value=e.Item.Cells[1].Text.ToString();
                cm.Parameters[ "@UID "].Value   =   e.Item.Cells[0].Text.ToString();
                cm.ExecuteNonQuery();
                dgd_users.EditItemIndex   =   -1;
                BindGrid();
        }
其中UserDelete存储过程为:
CREATE   PROCEDURE   UserDelete
(@UID   [varchar])
as   delete   [购物].[dbo].Users
where
                  ([UID]=@UID)

GO


编译可以通过,但是使用的时候就是什么效果都没有,高手来救救啊,赶时间。。谢谢~~~

[解决办法]
你可以跟踪以下,不过
存储过程的删除有问题
少from
[解决办法]
1. 在cm.ExecuteNonQuery();后面记得加cn.Close();
2. 看看你的Page_Load是否是这样写的
private void Page_Load(object sender, System.EventArgs e)


{
if(!IsPostBack)//是否少了回传页的判断
{
BindGrid();
}
}
3. 看看事件是否丢失,在Web 窗体设计器生成的代码中,应该有
private void InitializeComponent()
{
this.dgd_users.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgd_users_ItemCommand);
this.dgd_users.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgd_users_CancelCommand);
this.dgd_users.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgd_users_EditCommand);
this.dgd_users.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgd_users_UpdateCommand);
this.dgd_users.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgd_users_DeleteCommand);
this.Load += new System.EventHandler(this.Page_Load);
}

还有,存储过程没有错,在SQL Server中
delete from 表名 和 delete 表名 是等价的
[解决办法]
有一个datagrid的例子
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032328189&Culture=zh-CN

热点排行