Возможные причины автоматически сгенерированной команды удаления для GridView не работает - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть GridView и SqlDataSource, которые я настроил для автоматической генерации операторов удаления / вставки / обновления. Затем я просто включил удаление в GridView, и обычно я уходил. По какой-то причине строка не удаляется - страница отправляется обратно, но строка все еще там. Когда нажата кнопка «Удалить», RowDeleting срабатывает.

Какие возможные причины могут быть?

Редактировать: команда SELECT:

SELECT id, templatename, CASE WHEN type = 'W' THEN 'Weekly' WHEN type = 'M' THEN 'Monthly' WHEN type = 'Q' THEN 'Quarterly' WHEN type = 'S' THEN 'Six-monthly' WHEN type = 'A' THEN 'Anually' END AS TypeText, CASE WHEN invorcred = 'I' THEN 'Invoice' WHEN invorcred = 'C' THEN 'Credit' END AS 'InvOrCredText', nextinvdate, lastinvdate FROM InvoiceTemplates WHERE (sageaccount = @sageaccount)

Ответы [ 4 ]

2 голосов
/ 09 ноября 2010

Попробуйте записать в событие RowDeleting вместо автоматически сгенерированного, возможно, потому, что вам нужно получить идентификатор строки, которую вы хотите удалить (предложение Where)

Пример: Label13 скрыт, я получаю его из оператора select, но не показываю его пользователю. VB.NET:

    Protected Sub gvAddresses_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvAddresses.RowDeleting

        Dim selectedAddessId As Label = gvAddresses.Rows(e.RowIndex).FindControl("Label13")
        SqlDataSource.DeleteParameters("add_id").DefaultValue = selectedAddessId.Text
        SqlDataSource.Delete()
End Sub

C #

    protected void gvAddresses_RowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e)
{
    //Get the address Id to delete the selected address only
    Label selectedAddessId = gvAddresses.Rows(e.RowIndex).FindControl("Label13");
    SqlDataSource.DeleteParameters("add_id").DefaultValue = selectedAddessId.Text;
    SqlDataSource.Delete();
}
0 голосов
/ 09 ноября 2010

Попробуйте посмотреть, какой оператор SQL был выполнен в БД. (Для этого вы можете использовать утилиту «SQL Server Profiler»)

0 голосов
/ 09 ноября 2010

Возвращаете ли вы данные из нескольких таблиц в базе данных?Если команда select вашего sqldatasource выбирает данные из нескольких таблиц, я думаю, что команда delete не будет работать.

0 голосов
/ 09 ноября 2010

Попробуйте преобразовать столбец удаления в поле шаблона.Существует известная ошибка для команды удаления в сочетании с кнопками изображения.

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