#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?');";
}
}
В этом коде моя кнопка обновления — это кнопка ссылки, которая находится в первой ячейке, первом элементе управления.