Подтвердите сообщение при обновлении gridview

#c# #javascript #asp.net #gridview

#c# #javascript #asp.net #gridview

Вопрос:

У меня есть один gridview, который привязан к dataset, и установите для ‘AutoGenerateEditButton’ значение true. Когда пользователь нажимает «Редактировать», как обычно, доступны два варианта («Обновить» / «Отменить»). После того, как пользователь внес некоторые изменения в данные gridview и нажал «Обновить», я хочу показать сообщение подтверждения (восемь клиент / сервер). Если пользователь нажмет «Нет», прервите событие сервера (обновление строки). Если пользователь выбирает «да», вызовите событие сервера для обновления в базе данных.

Gridview будет выглядеть следующим образом:-

 <asp:GridView ID="gvUserList" runat="server" GridLines="None"
                Width="100%" AutoGenerateColumns="False" OnRowCancelingEdit="gvUserList_RowCancelingEdit"
                OnRowEditing="gvUserList_RowEditing" OnRowDataBound="gvUserList_RowDataBound"
                OnRowUpdating="gvUserList_RowUpdating" AutoGenerateEditButton="True">
  

После завершения кода gridview будет привязан к dataset.

 gvUserList.DataSource = ds;
gvUserList.DataMember = "ExistingUsers";
gvUserList.DataBind();
  

У меня есть Google, и есть подтверждающее сообщение для действия удаления gridview. Ничего не найдено для действия обновления.

Ценю любые советы. Спасибо.

Ответ №1:

Редактировать

Вы должны использовать не use AutoGenerateEditButton , а вместо этого шаблон

JavaScript

 <script type="text/javascript" language="javascript">
  function ConfirmOnDelete(){
   return confirm("Are you sure to delete the item?")==true)
  }
</script>
  

Поле шаблона

Это метод на LinkDelete_Click стороне сервера, который нужно вызвать для удаления вашего элемента

 <asp:TemplateField>
 <ItemTemplate>
  <asp:LinkButton ID=" LinkDelete " runat="server" CommandName="Delete" CommandArgument='<%# Eval("YourPrimaryKey") %>' OnClientClick="return ConfirmOnDelete();">Delete</asp:LinkButton>
 </ItemTemplate>
</asp:TemplateField>
  

C#

 protected void GridView1_RowCommand(object sender, 
                         GridViewCommandEventArgs e)
{
  if (e.CommandName == "Delete")
  {
    // get the primary key id of the clicked row
    int id= Convert.ToInt32(e.CommandArgument);
    // Delete the record 
    DeleteRecordByPrimaryKey(id);// Implement this on your own :) 

  }
}
  

Взгляните на эту статью, чтобы найти другой подход

Комментарии:

1. С помощью этого метода я могу вызвать сообщение подтверждения. Но есть еще одно требование. Если пользователь нажмет «Да» в сообщении, то событие обновления сервера будет запущено. Однако, если пользователь нажмет «Нет / Отмена», событие сервера обновления не должно запускаться. Как я могу этого добиться? Спасибо.

2. Мое поле шаблона выглядит следующим образом: — <ItemTemplate> <asp:linkbutton id=»lbtnEdit» runat=»server» commandname=»Edit» text=»Edit» /> </ItemTemplate> <EditItemTemplate>»Обновить» текст =»Обновить» OnClientClick =»вернуть подтверждение («Вы уверены, что хотите обновить?»);»/>Вы уверены, что хотите отменить изменения?’);»/></EditItemTemplate>

3. Спасибо за вашу помощь. Вместо этого я изменил его для команды обновления, и он работает так, как мне нужно. Хороших выходных впереди! 🙂

Ответ №2:

Попробуйте это, используя событие RowDataBound . Также убедитесь, что тип элемента управления и расположение элемента управления.

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        LinkButton lb = e.Row.Cells[0].Controls[0] as LinkButton;
        lb.OnClientClick = "return confirm('Are you sure want to update?');";
    }
}
  

В этом коде моя кнопка обновления — это кнопка ссылки, которая находится в первой ячейке, первом элементе управления.