我一遍又一遍地听到这个错误。
将数据加载到GridView中,但是当我想删除一行时,我收到了该错误。
<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted">
<Columns>
<asp:TemplateField HeaderText="Product Name">
<ItemTemplate>
<asp:HiddenField runat="server" ID="HiddenField1" Value='<%#Eval("oid")%>'></asp:HiddenField>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="titel" HeaderText="Name" />
<asp:BoundField DataField="oid" HeaderText="Itemno" />
<asp:BoundField DataField="prijs" HeaderText="Price" />
<asp:CommandField ButtonType="Link" CausesValidation="false" HeaderText="Update" ShowDeleteButton="True" />
<asp:BoundField DataField="prijs" HeaderText="Subtotal" />
</Columns>
</asp:GridView>
C#codebehind - 我并没有真正删除数据库中的行,但这是一个测试:
protected void OrdersGridView_RowDeleted(object sender, System.Web.UI.WebControls.GridViewDeletedEventArgs e)
{
if (e.Exception != null)
{
lblStatus.Text = e.Exception.ToString();
}
else
{
string sValue = ((HiddenField)OrdersGridView.SelectedRow.Cells[1].FindControl("HiddenField1")).Value;
lblStatus.Text = sValue;
}
}
但是在点击之后,我得到一个bigass黄色页面,其中包含下一个错误:
GridView'OrdersGridView'触发了未处理的事件RowDeleting。
答案 0 :(得分:11)
删除按钮,甚至是删除了CommandName的GridView中的常规按钮,将自动尝试触发OnRowDeleting。您可以添加它以使事情变得愉快,但不要做任何事情,因此它不会影响您的删除行为。
您可以将OnRowDeleting添加到GridView:
<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted" OnRowDeleting="OrdersGridView_RowDeleting">
然后在你的CodeBehind中添加:
void OrdersGridView_RowDeleting (object sender, GridViewDeleteEventArgs e)
{
}
答案 1 :(得分:4)
将您的行命令名称从删除更改为任何其他类似deleterecord
答案 2 :(得分:0)
看起来你正在处理“onrowdeleted”事件,而不是“RowDeleting”事件
在您的标记中,更改: onrowdeleted = “OrdersGridView_RowDeleted”
要 RowDeleting = “OrdersGridView_RowDeleting”
查看此事件的文档:您还将看到您的处理程序的签名需要更改: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdeleting.aspx 你的新处理程序看起来像这样:
protected void OrdersGridView_RowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e) {
if (e.Exception != null) {
lblStatus.Text = e.Exception.ToString();
}
else
{
string sValue = ((HiddenField)OrdersGridView.SelectedRow.Cells[1].FindControl("HiddenField1")).Value; lblStatus.Text = sValue;
}
}
发生RowDeleting事件,然后是onrowdeleted事件。 RowDeleting可以让你取消活动。