我有一些代码可以在条件下显示警告:
protected void btnSave_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvr in gvGroups.Rows)
{
CheckBox cbAdmin = (CheckBox)gvr.FindControl("cbAdmin");
CheckBox cbRemove = (CheckBox)gvr.FindControl("cbRemove");
Label lblID = (Label)gvr.FindControl("lblID");
int id;
bool idValid = int.TryParse(lblID.Text,out id);
bool isReadOnly = !cbAdmin.Checked;
if (idValid)
{
Group g = SecurityManager.GetGroup(id);
if (g.IsReadOnly != isReadOnly)
{
bool updateSuccess = SecurityManager.ChangeGroupPermissions(id, isReadOnly);
var master = Master as KezberProjectManager;
if (master != null)
{
master.ShowErrorAlert("Sample Error");
}
}
if (cbRemove.Checked)
{
bool removeEmpSuccess = SecurityManager.RemoveEmployeesFromGroup(id);
bool removeSuccess = SecurityManager.RemoveGroup(id);
}
}
}
BindGrid();
}
这就是:
public void ShowErrorAlert(string message)
{
error_alert.Visible = true;
lblError.Text = message;
}
加载母版页时:
if (!IsPostBack)
{
success_alert.Visible = false;
error_alert.Visible = false;
}
唯一的问题是,一旦显示警报,即使我下次没有要求它显示,它仍然存在。我需要它的方式是,1调用ShowErrorAlert应该只显示一次,之后,如果我单击保存按钮但没有进行任何更改,那么show方法不会被调用,它不应该显示。
有办法做到这一点吗?
由于
答案 0 :(得分:2)
如果您只想在一次回发时显示提醒,请在将if (!IsPostBack)
和success_alert
的可见性设置为false之前删除error_alert
。
Page_Load
在 btnSave_Click
之前被称为,所以你想先将它们设置为Visible = false;
,然后,如果调用了ShowErrorAlert()
,它就是'将其更改为true。
答案 1 :(得分:0)
一旦显示警报,代码中就没有选项可以隐藏它,因为你只隐藏它!IsPostback 因此,您可以在默认情况下隐藏按钮单击事件开头的警报,并仅在条件为真时显示警告。