【发布时间】:2018-07-07 14:22:18
【问题描述】:
在这个 Asp.net webform 应用程序中,我必须添加一个 jQuery 对话框,因为客户端需要一个自定义弹出确认框。我必须在后面的代码中附加对话框,因为对话框只会添加到 GridView 的某些行中的按钮。当单击按钮以显示对话框时,它只是在屏幕上闪烁,用户没有时间单击按钮。认为这是导致此问题的 GridView_RowCommand 事件末尾的重定向,但是一旦将其注释掉,它仍然会在屏幕上闪烁。认为它与按钮本身的回发功能有关,但似乎无法解决这个问题。尝试通过 jQuery 而不是后面代码中的 OnClientClick 属性附加对话框的打开,但这似乎也不起作用。有人可以看一下代码 sn-ps 看看我做错了什么或建议另一种方法来完成我需要做的事情吗?这是阻止我完成这个项目的唯一障碍。非常感谢您的帮助。
对话框的 HTML:
<div style="display:none" id="dialog-warning" title="Out of Network">
<p class="CallOut">
<asp:Label ID="lblOutOfNetworkMsg" HtmlEncode="false" runat="server"></asp:Label>
</p>
<p style="text-align:center;">
<asp:Button style="width:200px; background-color:#E9967A; font-family:Arial; font-size:11px; font-weight:bold; border:2px solid black;" ID="btnBack" runat="server" OnClientClick="return true;" CausesValidation="false" /><br /><br />
<asp:Button style="width:200px; background-color:#E9967A; font-family:Arial; font-size:11px; font-weight:bold; border:2px solid black;" ID="btnProceed" runat="server" OnClientClick="return false;" CausesValidation="false" />
</p>
</div>
用于设置对话框样式、打开对话框并将其附加到所需按钮的 jQuery:
$(function () {
var dlg = $("#dialog-warning").dialog({
resizable: false,
height: 200,
width: 300,
modal: true,
autoOpen: false,
open: function (event, ui) {
$(".ui-dialog-titlebar-close", ui.dialog).hide();
}
}).prev(".ui-dialog-titlebar").css("background", "#A0A0A0").css("font-family", "Arial").css("font-weight", "bold").css("color", "white").css("text-align", "center").css("font-size", "11px");
dlg.parent().appendTo(jQuery("form:first"));
});
function OpenDialog() {
$("#dialog-warning").dialog("open");
}
$(document).ready(function () {
$('[outofnetwork=true]').click(function () {
OpenDialog();
})
})
GridView_RowDataBound事件(添加属性标识哪些行需要附加对话框,然后在$(document).ready()中使用jQuery附加函数打开对话框):
else
{
e.Row.Cells[11].Style.Add("color", "#ff0000");
if (string.IsNullOrEmpty(ss.PhysicalServices))
{
//btn.OnClientClick = "OpenDialog();";
btn.Attributes.Add("outofnetwork", "true");
}
}
GridView_RowCommand 事件(点击按钮后执行的代码):
if (e.CommandName == "Navigate")
{
//CommandArgument comes in as XXX|YYY|ZZZ where XXX is the SiteID and YYY is the Network
//and ZZZ is the NetworkSort value. We parse out the values by splitting the CommandArgument on the pipe symbol
//Element 0 (zero) is the siteid and element 1 (one) is the network and element 2 (two) is the NetworkSort value.
oEventFlow.ClinicDetails.SiteID = Convert.ToInt32(e.CommandArgument.ToString().Split('|')[0].ToString());
oEventFlow.ClinicDetails.Network = Convert.ToInt32(e.CommandArgument.ToString().Split('|')[1].ToString());
oEventFlow.ClinicDetails.NetworkSort = Convert.ToInt32(e.CommandArgument.ToString().Split('|')[2].ToString());
Session[EventFlow.cEVENTFLOWSessionKey] = oEventFlow;
//Redir(oEventFlow.SiteSelectionRedirect);
//int selectedIndex = Convert.ToInt32(e.CommandArgument.ToString().Split('|')[3].ToString());
//GridViewRow selectedRow = gridResults.Rows[selectedIndex];
//if (selectedRow.Cells[11].Text != "OUT OF NETWORK")
//{
// Redir(oEventFlow.SiteSelectionRedirect);
//}
}
希望这很清楚我想要完成的工作。如果没有,请发表评论,我会更正。再次感谢。
【问题讨论】:
标签: asp.net gridview jquery-ui-dialog