2012-06-15 2 views

ответ

8

Если у вас есть кнопка удаления для каждой строки в GridView, вот что я считаю лучшим (и, безусловно, самым простым) способом заставить его поставить предупреждение, требующее подтверждения. Вот полный код ASPX (нет кода за необходимости):

<asp:TemplateField ShowHeader="False"> 
    <ItemTemplate> 
    <asp:LinkButton ID="DeleteButton" runat="server" 
     CausesValidation="False" 
     CommandName="Delete" 
     OnClientClick='<%# Eval("Title", "return confirm(\"Delete the datasource {0}?\");") %>' 
     Text="delete" /> 
    </ItemTemplate> 
</asp:TemplateField> 

Несколько примечаний:

  1. Имя_команды должен быть Удалить - это то, что отображает это в GridView удалить функциональность.
  2. Название - это название столбца данных заголовка этой строки. То, что вы используете здесь, будет зависеть от имен столбцов/свойств ваших данных.
  3. То же самое для слова datasource - Это то, что у нас есть. Вам нужно заменить то, что вы вызывают данные .
  4. Я думаю, <% $ resource_name%> должен работать для текста - но еще этого не сделал.
0

Если вы используете GridView, вы находитесь на неправильном пути. Плюсы не используют его. Они почти исключительно используют ListView. Так что не беспокойтесь об этом. В большинстве книг не преподаются передовые методы в промышленности.

+0

Будет ли это работать и для ListView? –

+0

@ David Thielen: Использование javascript для подтверждения удаления, как указано ниже, является хорошим, но ненадежным, потому что js находится в клиентском браузере и находится вне вашего контроля. Javascript может быть отключен в браузере клиента для обеспечения безопасности, поэтому окно подтверждения не будет отображаться. Лучший способ подтвердить удаление - поместить ListView в MultiView и поймать событие удаления элемента в ListView и переключиться на другое представление в MultiView, чтобы подтвердить удаление. После нажатия определенной пользовательской кнопки вы вручную удаляете запись из базы данных. – Aperture

0

Вы также можете добавить атрибут onlick в ссылку удаления динамически, на RowDataBound вид сетки.

В приведенном ниже коде есть таблица с тремя столбцами, поэтому columnIndex = 2. Также есть только одна кнопка автогенератора (delete), поэтому autoButtonIndex = 0. Если бы у нас была кнопка редактирования, кнопки сохранения, этот показатель изменится.

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 

Dim columnIndex As Integer = 2 
Dim autoButtonIndex as Integer = 0 

    Try 
     If (e.Row.RowType = DataControlRowType.DataRow) Then 

      If (e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate) Then 

       Dim lnkBtn As LinkButton = CType(e.Row.Cells(columnIndex).Controls(autoButtonIndex), LinkButton) 
       lnkBtn.Attributes.Add("onclick", "if(!confirm('Are you sure to delete this row?'))return false;") 

      End If 

     End If 

    Catch ex As Exception 

    End Try 

End Sub 

Не забудьте обработать свое исключение соответствующим образом.

Смежные вопросы