【问题标题】:Removing a row from a Gridview in Codebehind (getting exception?)从 Codebehind 中的 Gridview 中删除一行(出现异常?)
【发布时间】:2011-09-30 13:46:27
【问题描述】:

我正在尝试手动从我的 gridview 中删除一行,因为由于某种原因,当我从数据库和数据绑定中删除项目时,gridview 仍然没有更新。这是我正在使用的代码:

try
{
    gvCertifications.DeleteRow(int.Parse(commandArgs[1]));
}
catch (HttpException)
{
    //error
}

出于某种原因,我总是遇到那个 HttpException?我已经尝试在 之前和 在我的 DataBind 之后放置此命令(因为MSDN 表示当 gridview 未绑定到数据源时会发生 HttpException)

gridview 在加载时已经绑定到数据源,所以我不知道为什么会出现这个异常...

另外,如果它有帮助,这是我获得 commandArgs[] 的方式:

String[] commandArgs = e.CommandArgument.ToString().Split('|'); //before in same function as the try/catch block

以下是 .aspx 文件中的命令参数:

CommandArgument='<%#Eval("ThisId") + "|" + Container.DataItemIndex %>'

【问题讨论】:

  • 你提到的CommandName是什么?您在哪个事件中编写了此代码?
  • CommandName = "delete" 并且事件是gvCertifications_RowCommand
  • 好的..那么,您是否在数据源的deletecommand 属性上编写了删除查询?

标签: c# asp.net exception data-binding gridview


【解决方案1】:

如果您使用sqldatasource 作为数据源(如MSDN Example),那么您需要在其deletecommand 属性上编写删除查询。或者如果您使用DataTabe 作为DataSource,那么您需要处理gridview 的RowDeleting 事件。查看this link 获取样本。

【讨论】:

  • 我正在使用自定义命令,即GridView_RowCommand(...){ if(commandName == 'delete'){...}}
【解决方案2】:

虽然它不一定回答我的问题,但它解决了我试图解决的问题:

来自问题:

“...由于某种原因,当我从数据库和数据绑定中删除项目时,gridview 仍然没有更新...”

Gridview 设置了预定义的命令,例如“选择”、“编辑”和“删除”。当我尝试定义我自己的事件以使用命令名称“删除”运行时,程序将尝试运行我的部分事件以及它的预定义事件。这就是造成问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多