GridView 'OrdersGridView' вызвало событие RowDeleting, которое не было обработано - PullRequest
10 голосов
/ 23 августа 2010

Я получаю эту ошибку снова и снова.

Загрузка данных в 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;
    }
}

Но после нажатия я получаю большую желтую страницу со следующей ошибкой:

Событие RowDeleting GridView 'OrdersGridView', которое не было обработано.

Ответы [ 3 ]

11 голосов
/ 15 октября 2011

Наличие кнопки «Удалить» или даже обычной кнопки в GridView с именем CommandName удаления автоматически попытается запустить 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)
{
}
5 голосов
/ 18 января 2013

изменить имя команды строки с delete на любое другое, например deleterecord

0 голосов
/ 23 августа 2010

Похоже, вы обрабатываете событие 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, вероятно, позволяет отменить событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...