我有一个绑定到数据集的gridview,并将'AutoGenerateEditButton'设置为true。 当用户点击“编辑”时,有两个选项可用('更新'/'取消')。 一旦用户对gridview数据进行了一些更改并单击“更新”,我想显示确认消息(八个客户端/服务器)。如果用户单击“否”,则中止服务器事件(RowUpdating)。 如果用户选择“是”,则调用服务器事件以更新到数据库。
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将与数据集绑定。
gvUserList.DataSource = ds;
gvUserList.DataMember = "ExistingUsers";
gvUserList.DataBind();
我已经google了,并且确认了gridview删除操作的消息。找不到更新操作。
欣赏任何建议。感谢。
答案 0 :(得分:1)
修改强>
您不应该使用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 :)
}
}
看看这个article到另一种方法
答案 1 :(得分:0)
尝试使用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?');";
}
}
在这段代码中,我的更新按钮是一个LinkButton,它位于First Cell,第一个控件。