![](/img/trans.png)
[英]Dropdownlist SelectedIndexChanged firing on every postback
[英]stop alert box from firing on every postback
我有一个网络表单,当未找到搜索的项目时,它会显示一个警告框。 警报框都是 asp 端,在代码隐藏中调用它是 c# 端。
问题是在第一次调用之后,它会调用页面的每次回发。 单击后,它不应再次触发,直到再次错过搜索。
我试过if(!ispostback)
,但最初的触发是回发,所以它根本不会触发。 在回发期间,它甚至不会再次调用 c# 代码,它只显示警报框。
<style type="text/css">
.alertBox
{
position: absolute;
top: 100px;
left: 50%;
width: 500px;
margin-left: -250px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
padding: 4px 8px;
}
</style>
<script type="text/javascript">
function closeAlert(e) {
e.preventDefault();
this.parentNode.style.display = "none";
}
</script>
</head>
<body>
<form id="form_rooftopSAQPM" runat="server">
<div runat="server" id="AlertBox" class="alertBox" Visible="false">
<div runat="server" id="AlertBoxMessage"></div>
<button onclick="closeAlert.call(this, event)">Ok</button>
</div>
...
private void site_Load(string siteNumber)
{
DataSet ds = retrieveDataFromSQL("exec s_RooftopSite " + siteNumber, "Couldn't retrieve site information");
if(ds.Tables.Count>0)
{
//load the fields
txtFoo.Text = ds.Tables[0].Rows[0][0].ToString();
}
else
{
MessageBoxShow("Site not found.");
}
}
protected void MessageBoxShow(string message)
{
this.AlertBoxMessage.InnerText = message;
this.AlertBox.Visible = true;
}
...
如何将警报框设置为仅在被 c# 代码调用时触发,但仍允许它在第一次调用时弹出,这是回发?
我通过从 JavaScript 切换到 C# 来修复它:
ASP:
<asp:Button runat="server" id="btnCloseAlert"
onclick="btnCloseAlert_Click" Text="Ok" />
C#中的代码隐藏:
protected void btnCloseAlert_Click(object sender, EventArgs e)
{
AlertBox.Visible = false;
AlertBoxMessage.InnerText = "";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.