几天后我已经完成了这项工作并检查了各种来源。
我在 GridView 中有一个 LinkButton。
ASPX
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="lnkBtnDelete" runat="server" CssClass="mylink" CausesValidation="false" Text="Delete" OnClick="lnkBtnDelete_Click"> </asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
在 GridView OnRowDatabound 事件中,将 OnClientClick 属性设置为 Javascript 以调用引导框模式对话框。需要注意的重要事项是转义的单引号,我正在传递 LinkButton 的 UniqueID。 (因此这将为 GridView 中的所有行调用并传递正确的 Id。)
GridView1_RowDataBound 在后面的代码中
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridViewRow gvrow = ((GridViewRow)e.Row);
LinkButton lnkBtnDelete = gvrow.FindControl("lnkBtnDelete") as LinkButton;
lnkBtnDelete.OnClientClick = "return confirmDelete(this,\'" + lnkBtnDelete.UniqueID + "\');";
}
}
confirmDelete Javascript 函数显示引导框确认对话框。取消只会关闭模态表单而不运行 LinkButton 单击事件,但确认按钮将运行与 LinkButton 关联的内置 Javascript 回发事件。如果您将鼠标悬停在 LinkButton 上,您会看到正在调用的事件,并且由于我们传入了 UniqueID,它会为 GridView 中的每一行正确设置。
Javascript
function confirmDelete(sender, uniqueID) {
if ($((sender)[0]).attr("confirmed") == "true") { return true; }
bootbox.confirm("Are you sure you want to delete?", function (confirmed) {
if (confirmed) {
var link = $(sender)[0];
//javascript: __doPostBack('BuildingCodeCompliance2$GridView1$ctl02$lnkBtnDelete', '');
javascript: __doPostBack(uniqueID, '');
}
});
return false;
}
LinkButton_Click 事件将只具有您的常规删除功能。
LinkButton点击后面的代码
protected void lnkBtnDelete_Click(object sender, EventArgs e)
{
LinkButton lnk = sender as LinkButton;
GridViewRow gvrow = lnk.NamingContainer as GridViewRow;
// Delete your record here
}