0

我有一些代码可以在条件下显示警报:

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;
        }

唯一的问题是,一旦显示警报,即使我下次不要求显示它,它仍然存在。我需要它的方式是,对 ShowErrorAlert 的 1 次调用应该只显示一次,之后,如果我单击保存按钮但没有进行任何更改,则不会调用 show 方法并且它不应该显示。

有没有办法做到这一点?

谢谢

4

2 回答 2

2

如果您只想在一次回发时显示警报,请在将andif (!IsPostBack)的可见性设置为 false 之前删除。success_alerterror_alert

Page_Load之前调用过, btnSave_Click所以你想先将它们设置为Visible = false;,然后,如果ShowErrorAlert()被调用,它会将其更改为 true。

于 2013-02-05T14:16:55.603 回答
0

显示警报后,代码中没有选项可以隐藏它,因为您仅在 !IsPostback 上隐藏它所以您可以默认在按钮单击事件的开头隐藏警报,并仅在条件为真时显示它..

于 2013-02-05T14:19:19.403 回答