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

1つのポストバックにのみアラートを表示する場合は、との可視性をfalseに設定する前にを削除しif (!IsPostBack)ます。success_alerterror_alert

Page_Load前に btnSave_Click呼び出されるので、最初にに設定してからVisible = false;ShowErrorAlert()が呼び出されると、trueに変更されます。

于 2013-02-05T14:16:55.603 に答える
0

アラートを表示すると、!IsPostbackでのみ非表示になるため、コードに非表示にするオプションはありません。したがって、デフォルトでは、ボタンクリックイベントの最初にアラートを非表示にして、条件がtrueの場合にのみ表示できます。 ..

于 2013-02-05T14:19:19.403 に答える