| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:关于删除数据记录问题
只看楼主 加入收藏
lthbc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:1 
关于删除数据记录问题

我先在DataGrid中绑定了数据,可以把表中的数据正常显示出来。
之后,我在DataGrid中增加了一个删除列,想通过它来删除一条数据记录
因此,我在DataGrid1_DeleteCommand事件中写的代码如下:

private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.SelectedIndex=e.Item.ItemIndex;


string deleteCommand="delete from authors where au_id=@deleteAu_Id";

string constring=ConfigurationSettings.AppSettings["connectionString"];

SqlConnection myConnection=new SqlConnection(constring);

SqlCommand myCommand=new SqlCommand(deleteCommand,myConnection);
myCommand.Parameters.Add(new SqlParameter("@deleteAu_Id",SqlDbType.NVarChar,11));
myCommand.Parameters["@deleteAu_Id"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
myConnection.Open();
try
{
myCommand.ExecuteNonQuery();
Response.Write("<script language=javascript>alter('数据记录已经成功删除')<script>");
}
catch(SqlException)
{
Response.Write("<script language=javascript>alter('错误:无法删除数据记录')<script>");
}
myConnection.Close();
DataGrid1.DataBind();
}
但是,在进行删除事件处理时,发生如下的错误:

“/WebAppForDataReadOnly”应用程序中的服务器错误。

索引超出范围。必须为非负值并小于集合大小。参数名: index

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index

源错误:

行 140:			SqlCommand myCommand=new SqlCommand(deleteCommand,myConnection);
行 141:			myCommand.Parameters.Add(new SqlParameter("@deleteAu_Id",SqlDbType.NVarChar,11));
行 142:			myCommand.Parameters["@deleteAu_Id"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
行 143:			myConnection.Open();
行 144:			try

源文件: c:\inetpub\wwwroot\webappfordatareadonly\webform1.aspx.cs 行: 142

堆栈跟踪:

[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
   System.Collections.ArrayList.get_Item(Int32 index) +91
   System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
   WebAppForDataReadOnly.WebForm1.DataGrid1_DeleteCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\webappfordatareadonly\webform1.aspx.cs:142
   System.Web.UI.WebControls.DataGrid.OnDeleteCommand(DataGridCommandEventArgs e)
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e)
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()

请各位帮我解决,谢谢!(注:DataGird中的DataKeyField已设置为表authors的关键字如下: DataGrid1.DataKeyField="au_id")
搜索更多相关主题的帖子: 数据记录 删除 DataGrid target 
2006-04-17 23:34
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 

从表面上看好像没有什么问题。问题可能出现在绑定DataGrid的时侯。

比如说你的DataGrid分了两页,最后一页只有一条记录,而你正好删的是那一条的话,那么绑定DataGrid时,分页的页码就变了,最后一页应该是第一页,而不是第二页,如果你绑定DataGrid的时候,DataGrid还处在第二页的话,就会出错。


欢迎光临我的博客: http://smallfools.blog./default.html
2006-04-18 08:42
快速回复:关于删除数据记录问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012034 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved