/// <summary> /// ddlMDropDownList2のSelectedIndexChangedイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_ddlMDropDownList2_SelectedIndexChanged(FxEventArgs fxEventArgs) { // テキストボックスの値を変更 this.TextBox4.Text = "通常のポストバック(DDLのセレクト インデックス チェンジ)"; return ""; }
/// <summary>btnMButton2のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_btnMButton2_Click(FxEventArgs fxEventArgs) { // テキストボックスの値を変更 this.TextBox2.Text = "通常のポストバック(ボタンクリック)"; return ""; }
/// <summary>btnMButton1のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_btnMButton1_Click(FxEventArgs fxEventArgs) { // テキストボックスの値を変更 this.TextBox1.Text = "ajaxのポストバック(ボタンクリック)"; // ajaxのイベントハンドラでは画面遷移しないこと。 return ""; }
/// <summary> /// ddlMDropDownList1のSelectedIndexChangedイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_ddlMDropDownList1_SelectedIndexChanged(FxEventArgs fxEventArgs) { // テキストボックスの値を変更 this.TextBox3.Text = "ajaxのポストバック(DDLのセレクト インデックス チェンジ)"; // ajaxのイベントハンドラでは画面遷移しないこと。 return ""; }
/// <summary> /// btnButton1のクリックイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnButton1_Click(FxEventArgs fxEventArgs) { if (this.GetContentWebControl("btnButton1") != null) { Response.Write("おk"); } return ""; }
/// <summary>btnButton10のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>違法な画面遷移(Transfer)(×)</remarks> protected string UOC_btnButton10_Click(FxEventArgs fxEventArgs) { if (this.IsFx) { this.FxTransfer("./WebForm5.aspx"); } else { Server.Transfer("./WebForm5.aspx"); } return ""; }
/// <summary>btnButton15のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>違法な画面遷移(Redirect)(×)</remarks> protected string UOC_btnButton15_Click(FxEventArgs fxEventArgs) { if (this.IsFx) { this.FxRedirect("./WebForm5.aspx"); } else { Response.Redirect("./WebForm5.aspx"); } return ""; }
/// <summary> /// lbnMLinkButton4のクリックイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_lbnMLinkButton4_Click(FxEventArgs fxEventArgs) { return "WebForm4"; }
/// <summary>btnButton3のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>画面遷移不可能(×)</remarks> protected string UOC_btnButton5_Click(FxEventArgs fxEventArgs) { return "1→5"; }
/// <summary>btnButton28のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>dialog</remarks> protected string UOC_btnButton28_Click(FxEventArgs fxEventArgs) { // ブラウザ ウィンドウ別セッション領域 - 取得 this.TextBox1.Text = (string)this.GetDataFromBrowserWindow("msg"); return ""; }
/// <summary>rptRepeater1のコマンドイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_rptRepeater1_ItemCommand(FxEventArgs fxEventArgs) { System.Diagnostics.Debug.WriteLine("--------------------"); System.Diagnostics.Debug.WriteLine("ButtonID:" + fxEventArgs.ButtonID); System.Diagnostics.Debug.WriteLine("InnerButtonID:" + fxEventArgs.InnerButtonID); System.Diagnostics.Debug.WriteLine("PostBackValue:" + fxEventArgs.PostBackValue); return ""; }
/// <summary>バッチ更新ボタン</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnBatUpd_Click(FxEventArgs fxEventArgs) { // 引数クラスを生成 _3TierParameterValue parameterValue = new _3TierParameterValue( this.ContentPageFileNoEx, fxEventArgs.ButtonID, "BatchUpdate", (string)Session["DAP"], (MyUserInfo)this.UserInfo); // テーブル parameterValue.TableName = "Products"; // 主キーとタイムスタンプ列 parameterValue.AndEqualSearchConditions = new Dictionary<string, object>(); // 主キー列 parameterValue.AndEqualSearchConditions.Add("ProductID", ""); // タイムスタンプ列 // ・・・ // DataTableを設定 parameterValue.Obj = (DataTable)Session["SearchResult"]; // B層を生成 _3TierEngine b = new _3TierEngine(); // データ取得処理を実行 _3TierReturnValue returnValue = (_3TierReturnValue)b.DoBusinessLogic( (BaseParameterValue)parameterValue, DbEnum.IsolationLevelEnum.ReadCommitted); // 結果表示 //this.lblResult.Text = returnValue.Obj.ToString() + "件更新しました。"; // 更新ボタンの非活性化 this.btnBatUpd.Enabled = false; // 画面遷移しない。 return string.Empty; }
/// <summary>btnButton26のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>dialog</remarks> protected string UOC_btnButton26_Click(FxEventArgs fxEventArgs) { this.ShowModalScreen("/Aspx/testScreenCtrl/WebForm5.aspx"); return ""; }
/// <summary>gvwGridView1のSortingイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <param name="e">オリジナルのイベント引数</param> /// <returns>URL</returns> protected string UOC_gvwGridView1_Sorting(FxEventArgs fxEventArgs, GridViewSortEventArgs e) { // ソート条件の変更 Session["SortExpression"] = e.SortExpression; if ((string)Session["SortDirection"] == "ASC") { e.SortDirection = SortDirection.Descending; Session["SortDirection"] = "DESC"; } else { e.SortDirection = SortDirection.Ascending; Session["SortDirection"] = "ASC"; } // 画面遷移しない。 return string.Empty; }
/// <summary>追加ボタン</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnInsert_Click(FxEventArgs fxEventArgs) { // 画面遷移(詳細表示) return "ProductsDetail.aspx"; }
/// <summary>検索ボタン</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnSearch_Click(FxEventArgs fxEventArgs) { // 更新ボタンの非活性化 this.btnBatUpd.Enabled = false; // GridViewをリセット this.gvwGridView1.PageIndex = 0; this.gvwGridView1.Sort("", SortDirection.Ascending); // 検索条件の収集 // AndEqualSearchConditions Dictionary<string, object> andEqualSearchConditions = new Dictionary<string, object>(); andEqualSearchConditions.Add("ProductID", this.txtProductID_And.Text); andEqualSearchConditions.Add("ProductName", this.txtProductName_And.Text); //andEqualSearchConditions.Add("SupplierID", this.txtSupplierID_And.Text); andEqualSearchConditions.Add("SupplierID", this.ddlSupplierID_And.SelectedValue); //andEqualSearchConditions.Add("CategoryID", this.txtCategoryID_And.Text); andEqualSearchConditions.Add("CategoryID", this.ddlCategoryID_And.SelectedValue); andEqualSearchConditions.Add("QuantityPerUnit", this.txtQuantityPerUnit_And.Text); andEqualSearchConditions.Add("UnitPrice", this.txtUnitPrice_And.Text); andEqualSearchConditions.Add("UnitsInStock", this.txtUnitsInStock_And.Text); andEqualSearchConditions.Add("UnitsOnOrder", this.txtUnitsOnOrder_And.Text); andEqualSearchConditions.Add("ReorderLevel", this.txtReorderLevel_And.Text); andEqualSearchConditions.Add("Discontinued", this.txtDiscontinued_And.Text); Session["AndEqualSearchConditions"] = andEqualSearchConditions; // AndLikeSearchConditions Dictionary<string, string> andLikeSearchConditions = new Dictionary<string, string>(); andLikeSearchConditions.Add("ProductID", this.txtProductID_And_Like.Text); andLikeSearchConditions.Add("ProductName", this.txtProductName_And_Like.Text); andLikeSearchConditions.Add("SupplierID", this.txtSupplierID_And_Like.Text); andLikeSearchConditions.Add("CategoryID", this.txtCategoryID_And_Like.Text); andLikeSearchConditions.Add("QuantityPerUnit", this.txtQuantityPerUnit_And_Like.Text); andLikeSearchConditions.Add("UnitPrice", this.txtUnitPrice_And_Like.Text); andLikeSearchConditions.Add("UnitsInStock", this.txtUnitsInStock_And_Like.Text); andLikeSearchConditions.Add("UnitsOnOrder", this.txtUnitsOnOrder_And_Like.Text); andLikeSearchConditions.Add("ReorderLevel", this.txtReorderLevel_And_Like.Text); andLikeSearchConditions.Add("Discontinued", this.txtDiscontinued_And_Like.Text); Session["AndLikeSearchConditions"] = andLikeSearchConditions; // OrEqualSearchConditions Dictionary<string, object[]> orEqualSearchConditions = new Dictionary<string, object[]>(); orEqualSearchConditions.Add("ProductID", this.txtProductID_OR.Text.Split(' ')); orEqualSearchConditions.Add("ProductName", this.txtProductName_OR.Text.Split(' ')); orEqualSearchConditions.Add("SupplierID", this.txtSupplierID_OR.Text.Split(' ')); orEqualSearchConditions.Add("CategoryID", this.txtCategoryID_OR.Text.Split(' ')); orEqualSearchConditions.Add("QuantityPerUnit", this.txtQuantityPerUnit_OR.Text.Split(' ')); orEqualSearchConditions.Add("UnitPrice", this.txtUnitPrice_OR.Text.Split(' ')); orEqualSearchConditions.Add("UnitsInStock", this.txtUnitsInStock_OR.Text.Split(' ')); orEqualSearchConditions.Add("UnitsOnOrder", this.txtUnitsOnOrder_OR.Text.Split(' ')); orEqualSearchConditions.Add("ReorderLevel", this.txtReorderLevel_OR.Text.Split(' ')); orEqualSearchConditions.Add("Discontinued", this.txtDiscontinued_OR.Text.Split(' ')); Session["OrEqualSearchConditions"] = orEqualSearchConditions; // OrLikeSearchConditions Dictionary<string, string[]> orLikeSearchConditions = new Dictionary<string, string[]>(); orLikeSearchConditions.Add("ProductID", this.txtProductID_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("ProductName", this.txtProductName_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("SupplierID", this.txtSupplierID_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("CategoryID", this.txtCategoryID_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("QuantityPerUnit", this.txtQuantityPerUnit_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("UnitPrice", this.txtUnitPrice_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("UnitsInStock", this.txtUnitsInStock_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("UnitsOnOrder", this.txtUnitsOnOrder_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("ReorderLevel", this.txtReorderLevel_OR_Like.Text.Split(' ')); orLikeSearchConditions.Add("Discontinued", this.txtDiscontinued_OR_Like.Text.Split(' ')); Session["OrLikeSearchConditions"] = orLikeSearchConditions; //// ElseSearchConditions //Dictionary<string, object> ElseSearchConditions = new Dictionary<string, object>(); //ElseSearchConditions.Add("myp1", 1); //ElseSearchConditions.Add("myp2", 40); //Session["ElseSearchConditions"] = ElseSearchConditions; //Session["ElseWhereSQL"] = "AND [ProductID] BETWEEN @myp1 AND @myp2"; // ソート条件の初期化 Session["SortExpression"] = "ProductID"; // 主キーを指定 Session["SortDirection"] = "ASC"; // ASCを指定 // ページング this.gvwGridView1.AllowPaging = true; // gvwGridView1をObjectDataSourceに連結。 this.gvwGridView1.DataSource = null; this.gvwGridView1.DataSourceID = "ObjectDataSource1"; // ヘッダーを設定する。 this.gvwGridView1.Columns[0].HeaderText = "削除"; this.gvwGridView1.Columns[1].HeaderText = "更新"; this.gvwGridView1.Columns[2].HeaderText = "ProductID"; this.gvwGridView1.Columns[3].HeaderText = "ProductName"; this.gvwGridView1.Columns[4].HeaderText = "SupplierID"; this.gvwGridView1.Columns[5].HeaderText = "CategoryID"; this.gvwGridView1.Columns[6].HeaderText = "QuantityPerUnit"; this.gvwGridView1.Columns[7].HeaderText = "UnitPrice"; this.gvwGridView1.Columns[8].HeaderText = "UnitsInStock"; this.gvwGridView1.Columns[9].HeaderText = "UnitsOnOrder"; this.gvwGridView1.Columns[10].HeaderText = "ReorderLevel"; this.gvwGridView1.Columns[11].HeaderText = "Discontinued"; // 画面遷移しない。 return string.Empty; }
/// <summary>btnButton1のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnButton1_Click(FxEventArgs fxEventArgs) { // なにもしない。 return ""; }
/// <summary>マスタページにイベントハンドラを実装可能にしたのでそのテスト。</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnMPButton_Click(FxEventArgs fxEventArgs) { Response.Write("UOC_btnMPButton_Clickを実行できた。"); return ""; }
/// <summary>btnButton16のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>違法な画面遷移(Redirect)(×)</remarks> protected string UOC_btnButton16_Click(FxEventArgs fxEventArgs) { this.ShowOKMessageDialog("ポストバックの", "テストです", FxEnum.IconType.Information, "テスト"); return ""; }
/// <summary>gvwGridView1のコマンドイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_gvwGridView1_RowCommand(FxEventArgs fxEventArgs) { // ソートの場合は無視 if (fxEventArgs.InnerButtonID == "Sort") { return string.Empty; } // DataTableの取得 DataTable dt = (DataTable)Session["SearchResult"]; // インデックスを取得 int index = int.Parse(fxEventArgs.PostBackValue); // e.NewSelectedIndexRowsのインデックスが一致しないので。 // キーで探すのは主キーを意識するため自動生成では面倒になる。 int i = -1; switch (fxEventArgs.InnerButtonID) { case "Delete": // 選択されたレコードを削除 foreach (DataRow dr in dt.Rows) { if (dr.RowState == DataRowState.Added) { // Added行はDeleteできないのでスキップ continue; } else if (dr.RowState != DataRowState.Deleted) { // != Added、Deleted // e.NewSelectedIndexとRowsのインデックスをチェック i++; if (index == i) { // 削除 dr.Delete(); break; } } else { // Delete行は表示されないのでスキップ continue; } } break; case "Update": // 選択されたレコードを更新 foreach (DataRow dr in dt.Rows) { if (dr.RowState != DataRowState.Deleted) { // != Deleted // e.NewSelectedIndexとRowsのインデックスをチェック i++; if (index == i) { // 更新 GridViewRow gvRow = this.gvwGridView1.Rows[index]; foreach (DataColumn dc in dt.Columns) { TextBox txtBox = ((TextBox)gvRow.FindControl("txt" + dc.ColumnName)); if(txtBox != null) { dr[dc] = txtBox.Text; } #region 追加コード(ComboBox化) DropDownList ddl = ((DropDownList)gvRow.FindControl("ddl" + dc.ColumnName)); if (ddl != null) { dr[dc] = ddl.SelectedValue; } #endregion } break; } } else { // Delete行はスキップ continue; } } break; default: // 不明 return string.Empty; } // GridViewをリセット this.gvwGridView1.PageIndex = 0; this.gvwGridView1.Sort("", SortDirection.Ascending); // ページングの中止 this.gvwGridView1.AllowPaging = false; // GridViewのDataSourceを変更してDataBindする。 this.gvwGridView1.DataSource = dt; this.gvwGridView1.DataSourceID = null; this.gvwGridView1.DataBind(); // DataTableの設定 Session["SearchResult"] = dt; // 更新ボタンの活性化 this.btnBatUpd.Enabled = true; // 画面遷移しない。 return string.Empty; }
/// <summary>btnButton21のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>window open</remarks> protected string UOC_btnButton21_Click(FxEventArgs fxEventArgs) { this.ShowNormalScreen("./WebForm5.aspx"); return ""; }
/// <summary>lbxListBox1のSelectedIndexChangedイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_lbxListBox1_SelectedIndexChanged(FxEventArgs fxEventArgs) { System.Diagnostics.Debug.WriteLine("--------------------"); System.Diagnostics.Debug.WriteLine("ButtonID:" + fxEventArgs.ButtonID); System.Diagnostics.Debug.WriteLine("InnerButtonID:" + fxEventArgs.InnerButtonID); System.Diagnostics.Debug.WriteLine("PostBackValue:" + fxEventArgs.PostBackValue); ListBox ddl = (ListBox)this.rptRepeater1.Items [int.Parse(fxEventArgs.PostBackValue)].FindControl("lbxListBox1"); System.Diagnostics.Debug.WriteLine(ddl.SelectedValue); return ""; }
/// <summary>btnButton27のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> /// <remarks>dialog</remarks> protected string UOC_btnButton27_Click(FxEventArgs fxEventArgs) { // ブラウザ ウィンドウ別セッション領域 - 設定 this.SetDataToBrowserWindow("msg", this.TextBox1.Text); return ""; }
/// <summary>btnButton2のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnButton2_Click(FxEventArgs fxEventArgs) { // Repeater1に対する変更をDataTableに反映する。 DataTable dt = this.RepeaterDataSource; // 変更の検知 bool isUpd = false; for (int i = 0; i < this.rptRepeater1.Items.Count - 1; i++) { // Repeater1の行毎に処理 DataRow dr = dt.Rows[i]; // 変更されていればDataTableに反映(RowStateが変更される) TextBox txt = ((TextBox)this.rptRepeater1.Items[i].FindControl("TextBox1")); if (dr["textbox"].ToString() != txt.Text) { dr["textbox"] = txt.Text; isUpd = true; } // 変更されていればDataTableに反映(RowStateが変更される) CheckBox cbx = ((CheckBox)this.rptRepeater1.Items[i].FindControl("cbxCheckBox1")); //RadioButton cbx = ((RadioButton)this.rptRepeater1.Items[i].FindControl("rbnRadioButton1")); if ((bool)dr["checkbox"] != cbx.Checked) { dr["checkbox"] = cbx.Checked; isUpd = true; } // 変更されていればDataTableに反映(RowStateが変更される) DropDownList ddl = ((DropDownList)this.rptRepeater1.Items[i].FindControl("ddlDropDownList1")); //ListBox ddl = ((ListBox)this.rptRepeater1.Items[i].FindControl("lbxListBox1")); if (dr["dropdownlist"].ToString() != ddl.SelectedValue) { dr["dropdownlist"] = ddl.SelectedValue; isUpd = true; } } // 変更時のみ実行 if (isUpd) { // 再データバインド this.RepeaterDataSource = dt; this.rptRepeater1.DataSource = dt; this.rptRepeater1.DataBind(); } return ""; }
/// <summary>rbnRadioButton1のCheckedChangedイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_rbnRadioButton1_CheckedChanged(FxEventArgs fxEventArgs) { System.Diagnostics.Debug.WriteLine("--------------------"); System.Diagnostics.Debug.WriteLine("ButtonID:" + fxEventArgs.ButtonID); System.Diagnostics.Debug.WriteLine("InnerButtonID:" + fxEventArgs.InnerButtonID); System.Diagnostics.Debug.WriteLine("PostBackValue:" + fxEventArgs.PostBackValue); RadioButton cbx = (RadioButton)this.rptRepeater1.Items [int.Parse(fxEventArgs.PostBackValue)].FindControl("rbnRadioButton1"); System.Diagnostics.Debug.WriteLine(cbx.Checked.ToString()); return ""; }
/// <summary> /// ibnMImageButton1のクリックイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_testScreenCtrl_ibnMImageButton1_Click(FxEventArgs fxEventArgs) { // 外部サイトへ(QueryString付き) return "google?q=WebForm1"; }
/// <summary>Page_Loadのイベントハンドラ</summary> private void Page_Load(object sender, EventArgs e) { // isNoSessionフラグをtrueに設定すると、当該画面でのみ以下の機能をOFFにして、 // ・ボタン履歴情報記録機能 // ・不正操作防止機能 // 最後に // ・Session.Abandon(); // + Sessionタイムアウト検出用Cookieの消去 // を実行する。 // これにより、ログイン画面相当(先頭画面であること)で、 // 基盤側の処理でSessionIDを返さないように都度クリア。 // なお、次画面への遷移には、リダイレクトのGETを使用する。 // (ブラウザウィンドウ スコープが自動消去されなくなるので必要であれば念の為) // 中間画面でこのフラグをTrueに設定した場合の動作保証はしない。 // (IDEのインテリセンスに出ない(隠しコマンド的)扱いにする) bool isNoSession = this.IsNoSession; bool? canCheckIllegalOperation = this.CanCheckIllegalOperation; try { #region セッション スコープのロック // 2009/09/25-start // セッションステートレス対応 if (HttpContext.Current.Session == null) { // SessionがOFFの場合 this.SessionLock = new object(); } else { // チェック this.SessionLock = Session[FxHttpSessionIndex.SESSION_LOCK]; if (this.SessionLock == null) { // nullの場合、新規生成 Session[FxHttpSessionIndex.SESSION_LOCK] = new object(); this.SessionLock = Session[FxHttpSessionIndex.SESSION_LOCK]; } else { // 存在する。 } } // 2009/09/25-end #endregion // 念のためセッション単位でロック。 lock (this.SessionLock) { #region フレームワークの初期処理 #region マスタ ページの初期化 // コンテンツ ページのファイル名(拡張子抜き)を取り出す //string[] aryContentPageFile = this.AppRelativeVirtualPath.Split('/'); //this.ContentPageFileNoEx = aryContentPageFile[aryContentPageFile.Length - 1].Split('.')[0]; this.ContentPageFileNoEx = PubCmnFunction.GetFileNameNoEx(this.AppRelativeVirtualPath, '/'); // マスタ ページを取得し、 // ルートのマスタ ページ名も初期化する。 this.GetMasterPages(); #endregion #region ユーザ コントロールの初期化 // ユーザ コントロールの初期化 this.GetUserControl(this); #endregion #region Ajaxの状態を確認 #region ASP.NET Ajax // スクリプト マネージャを取得 this.CurrentScriptManager = ScriptManager.GetCurrent(this); if (this.CurrentScriptManager == null) { // AjaxExtensionをサポートしない画面 this.AjaxExtensionStatus = FxEnum.AjaxExtStat.NoAjaxExtension; } else { if (this.CurrentScriptManager.IsInAsyncPostBack) { // AjaxExtensionをサポートする画面であり、当該処理はAjaxExtensionである。 this.AjaxExtensionStatus = FxEnum.AjaxExtStat.IsAjaxExtension; } else { // AjaxExtensionをサポートする画面だが、当該処理はAjaxExtensionでない。 this.AjaxExtensionStatus = FxEnum.AjaxExtStat.IsNotAjaxExtension; } } #endregion #region ClientCallback if (Request.Form[FxLiteral.CALLBACK_ID] == null) { // ClientCallbackのポストバック以外のリクエスト this.IsClientCallback = false; } else { // #22-start //if (this.AjaxExtensionStatus == FxEnum.AjaxExtStat.IsAjaxExtension) //{ // // ClientCallbackを使用したAjaxExtension // this.IsClientCallback = false; //} //else //{ // ClientCallbackのポストバック this.IsClientCallback = true; //} // #22-end } #endregion #endregion #region エラー画面へのパスチェック string errorScreenPath = GetConfigParameter.GetConfigValue(FxLiteral.ERROR_SCREEN_PATH); // エラー処理 if (errorScreenPath == null || errorScreenPath == "") { throw new FrameworkException( FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_PATH1[0], String.Format(FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_PATH1[1], FxLiteral.ERROR_SCREEN_PATH)); } #endregion #region セッションタイムアウト検出処理 // セッションタイムアウト検出処理の定義を取得 string sessionTimeOutCheck = GetConfigParameter.GetConfigValue(FxLiteral.SESSION_TIMEOUT_CHECK); // デフォルト値対策:設定なし(null)の場合の扱いを決定 if (sessionTimeOutCheck == null) { // OFF扱い sessionTimeOutCheck = FxLiteral.OFF; } // ON / OFF if (sessionTimeOutCheck.ToUpper() == FxLiteral.ON) { // セッションタイムアウト検出処理(ON) // セッション状態の確認 if (Session.IsNewSession) { // 新しいセッションが開始された // セッションタイムアウト検出用Cookieをチェック HttpCookie cookie = Request.Cookies.Get(FxHttpCookieIndex.SESSION_TIMEOUT); if (cookie == null) { // セッションタイムアウト検出用Cookie無し → 新規のアクセス // 2009/09/18-start // セッションタイムアウト検出用Cookieを新規作成(値は空文字以外、何でも良い) // Set-Cookie HTTPヘッダをレスポンス Response.Cookies.Set(FxCmnFunction.CreateCookieForSessionTimeoutDetection()); // 2009/09/18-end } else { // セッションタイムアウト検出用Cookie有り if (cookie.Value == "") { // セッションタイムアウト発生後の新規アクセス // だが、値が消去されている(空文字に設定されている)場合は、 // 一度エラー or セッションタイムアウトになった後の新規のアクセスである。 // 2009/09/18-start // セッションタイムアウト検出用Cookieを再作成(値は空文字以外、何でも良い) // Set-Cookie HTTPヘッダをレスポンス Response.Cookies.Set(FxCmnFunction.CreateCookieForSessionTimeoutDetection()); // 2009/09/18-end } else { // セッションタイムアウト発生 // エラー画面で以下の処理を実行する。 // ・セッションタイムアウト検出用Cookieを消去 // ・セッションを消去 // ※ エラー画面への遷移方法がTransferになっているため、 // ここでセッションタイムアウト検出用Cookieを消去できないため。 // セッションタイムアウト例外を発生させる throw new FrameworkException( FrameworkExceptionMessage.SESSION_TIMEOUT[0], FrameworkExceptionMessage.SESSION_TIMEOUT[1]); } } } else { // セッション継続中 } } else if (sessionTimeOutCheck.ToUpper() == FxLiteral.OFF) { // セッションタイムアウト検出処理(OFF) } else { // パラメータ・エラー(書式不正) throw new FrameworkException( FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_SWITCH1[0], String.Format(FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_SWITCH1[1], FxLiteral.SESSION_TIMEOUT_CHECK)); } // 2008/10/16---チェック処理の追加(ここまで) #endregion #region HIDDENコントロールの検索・取得 // 2009/07/21-start-end #region 画面遷移制御関連 // ブラウザ ウィンドウGUID this.WindowGuid = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_WINDOW_GUID); // 2009/07/21-この行 // エラー処理 if (this.WindowGuid == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_WINDOW_GUID)); } // リクエストチケットGUID this.RequestTicketGuid = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_REQUEST_TICKET_GUID); // 2009/07/21-この行 // エラー処理 if (this.RequestTicketGuid == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_REQUEST_TICKET_GUID)); } #endregion #region ダイアログ表示関連 // 開く子画面のタイプ this.ChildScreenType = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_CHILD_SCREEN_TYPE); // 2009/07/21-この行 // エラー処理 if (this.ChildScreenType == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_CHILD_SCREEN_TYPE)); } else { // 逐次初期化 this.ChildScreenType.Value = "0"; } // 開く子画面のURL this.ChildScreenUrl = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_CHILD_SCREEN_URL); // 2009/07/21-この行 // エラー処理 if (this.ChildScreenUrl == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_CHILD_SCREEN_URL)); } // 子画面を閉じるフラグ this.CloseFlag = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_CLOSE_FLAG); // 2009/07/21-この行 // エラー処理 if (this.CloseFlag == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_CLOSE_FLAG)); } // 子画面を閉じた後の後処理を判別するフラグ this.SubmitFlag = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_SUBMIT_FLAG); // 2009/07/21-この行 // エラー処理 if (this.SubmitFlag == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_SUBMIT_FLAG)); } // 画面GUIDを保存するHiddenコントロールを取得 this.ScreenGuid = (HiddenField)this.RootMasterPage.FindControl(FxLiteral.HIDDEN_SCREEN_GUID); // 2009/07/21-この行 // エラー処理 if (this.ScreenGuid == null) { throw new FrameworkException( FrameworkExceptionMessage.NO_FX_HIDDEN[0], String.Format(FrameworkExceptionMessage.NO_FX_HIDDEN[1], FxLiteral.HIDDEN_SCREEN_GUID)); } #endregion #endregion #region 二重送信の検出処理 // 二重送信の検出処理の定義を取得 string doubleTransmissionCheck = GetConfigParameter.GetConfigValue(FxLiteral.DOUBLE_TRANSMISSION_CHECK); // デフォルト値対策:設定なし(null)の場合の扱いを決定 if (doubleTransmissionCheck == null) { // OFF扱い doubleTransmissionCheck = FxLiteral.OFF; } // ON / OFF if (doubleTransmissionCheck.ToUpper() == FxLiteral.ON) { // 二重送信の検出処理(ON) // onSubmitイベントに、JavaScriptを仕掛ける。 this.Form.Attributes.Add("onSubmit", "return Fx_OnSubmit();"); } else if (doubleTransmissionCheck.ToUpper() == FxLiteral.OFF) { // 二重送信の検出処理(OFF) } else { // パラメータ・エラー(書式不正) throw new FrameworkException( FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_SWITCH1[0], String.Format(FrameworkExceptionMessage.ERROR_IN_WRITING_OF_FX_SWITCH1[1], FxLiteral.DOUBLE_TRANSMISSION_CHECK)); } #endregion #region 不正操作の検出機能 int requestTicketGuidMaxQueueLength = 0; // ajaxの場合は、実行しない。 if (this.IsClientCallback) { // ClientCallbackなので実行しない。 // requestTicketGuidMaxQueueLength = 0 のままに } else { if (this.AjaxExtensionStatus == FxEnum.AjaxExtStat.IsAjaxExtension) { // Ajax Extensionなので実行しない。 // requestTicketGuidMaxQueueLength = 0 のままに } else { // 不正操作の検出機能の定義を取得 // ※ 記録する操作の最大数 requestTicketGuidMaxQueueLength = FxCmnFunction.GetNumFromConfig( FxLiteral.REQUEST_TICKET_GUID_MAX_QUEUE_LENGTH, 0); } } // isNoSessionフラグ if (isNoSession) { // 不正操作の検出機能(強制OFF) requestTicketGuidMaxQueueLength = 0; } else { if (canCheckIllegalOperation == null) { // 定義値による } else if (canCheckIllegalOperation == true) { // 不正操作の検出機能(強制ON) if (requestTicketGuidMaxQueueLength <= 0) { // OFF→ON // 保持する履歴の数は固定。 requestTicketGuidMaxQueueLength = 100; } else //(canCheckIllegalOperation == false) { // ON→ON // 定義値による。 } } else { // 不正操作の検出機能(強制OFF) requestTicketGuidMaxQueueLength = 0; } } // 定義のチェック if (0 < requestTicketGuidMaxQueueLength) { // キューの取得 this.GetGuidQueue( out this.RequestTicketGuid_Queue, FxHttpSessionIndex.REQUEST_TICKET_GUID_QUEUE, requestTicketGuidMaxQueueLength); // チェック対象はポストバックのみ if (this.IsPostBack) { // ポストバック // HIDDENとSESSIONのリクエスト チケットGUIDをチェック if (this.RequestTicketGuid_Queue.Contains(this.RequestTicketGuid.Value)) { // = → 正常 // 旧リクエスト チケットGUIDの作成 string oldGuid = this.RequestTicketGuid.Value; // 新規リクエスト チケットGUIDの作成 string newGuid = Guid.NewGuid().ToString(); // HIDDENとSESSIONに保存 // HIDDEN this.RequestTicketGuid.Value = newGuid; // SESSION(リクエスト チケットGUIDキューの再構築) this.RestructureGuidQueue( oldGuid, newGuid, out this.RequestTicketGuid_Queue, FxHttpSessionIndex.REQUEST_TICKET_GUID_QUEUE, requestTicketGuidMaxQueueLength); } else { // ≠ → 異常 // 不正操作を検出 throw new FrameworkException( FrameworkExceptionMessage.ILLEGAL_OPERATION_CHECK_ERROR[0], FrameworkExceptionMessage.ILLEGAL_OPERATION_CHECK_ERROR[1]); } } else { // 初回ロード // 新規リクエスト チケットGUIDの作成 string guid = Guid.NewGuid().ToString(); // HIDDENとSESSIONに保存 // HIDDEN this.RequestTicketGuid.Value = guid; // SESSION // キューの最大長を超える場合は、デキューする if (requestTicketGuidMaxQueueLength <= this.RequestTicketGuid_Queue.Count) { // 最も古いリクエスト チケットGUIDをデキュー RequestTicketGuid_Queue.Dequeue(); } // 新規のリクエスト チケットGUIDをエンキュー RequestTicketGuid_Queue.Enqueue(guid); } } #endregion #region 画面遷移制御機能 // 2009/07/31-start #region ウィンドウGUID設定 // ウィンドウGUID string browserWindowGuid = ""; // ウィンドウ別セッション領域の自動削除機能の定義を取得 // ※ ウィンドウ別セッション領域のスコープの最大数 int windowGuidMaxQueueLength = FxCmnFunction.GetNumFromConfig( FxLiteral.WINDOW_GUID_MAX_QUEUE_LENGTH, 0); if (this.WindowGuid.Value.Length == 36) { // ウィンドウGUIDがある場合 #region ウィンドウGUIDキューの再構築 // 定義のチェック if (0 < windowGuidMaxQueueLength) { // ウィンドウGUIDキューの再構築 this.RestructureGuidQueue(this.WindowGuid.Value, out this.WindowGuid_Queue, FxHttpSessionIndex.WINDOW_GUID_QUEUE, windowGuidMaxQueueLength); } #endregion } else { // ウィンドウGUIDがない場合 #region ウィンドウGUIDの初期化 // HTTP ContextにウィンドウGUIDがあるか? if (HttpContext.Current.Items[ FxHttpContextIndex.BROWSER_WINDOW_GUID] == null) { } else { browserWindowGuid = HttpContext.Current.Items[ FxHttpContextIndex.BROWSER_WINDOW_GUID].ToString(); } // 無かった場合、 if (browserWindowGuid == "") { // HTTP Query StringにウィンドウGUIDがあるか? if (HttpContext.Current.Request.QueryString[ FxHttpQueryStringIndex.BROWSER_WINDOW_GUID] == null) { } else { browserWindowGuid = HttpContext.Current.Request.QueryString[ FxHttpQueryStringIndex.BROWSER_WINDOW_GUID].ToString(); } } // ウィンドウGUIDが新規生成されたか判別するフラグ bool isNewWindowGuid = false; // 無かった場合、 if (browserWindowGuid == "") { // ウィンドウGUIDを新規生成し、ウィンドウGUIDをHIDDEに設定 this.WindowGuid.Value = Guid.NewGuid().ToString(); isNewWindowGuid = true; } else { // ウィンドウGUIDをHIDDEに設定 this.WindowGuid.Value = browserWindowGuid; isNewWindowGuid = false; } #endregion #region ウィンドウ別セッション領域の自動削除とウィンドウGUIDキューの再構築 // 定義のチェック if (0 < windowGuidMaxQueueLength) { if (isNewWindowGuid) { // 新規ウィンドウGUIDが生成された場合 // ウィンドウGUIDキューからセッション自動削除 this.DeleteSessionWithGuidQueueAutomatically( this.WindowGuid.Value, this.WindowGuid_Queue, FxHttpSessionIndex.WINDOW_GUID_QUEUE, windowGuidMaxQueueLength); } else { // 新規ウィンドウGUIDが生成されなかった場合 // ウィンドウGUIDキューの再構築 this.RestructureGuidQueue(this.WindowGuid.Value, out this.WindowGuid_Queue, FxHttpSessionIndex.WINDOW_GUID_QUEUE, windowGuidMaxQueueLength); } } #endregion } #endregion // 2009/07/31-end #region 画面遷移チェック処理 if (SC.TransitionCheck) { // ポストバック if (this.IsPostBack) { // ポストバック時はチェックしない。 } else { // 初回ロード時にチェックする。 // ウィンドウ別セッション領域から前画面情報を取得する。 if (this.GetDataFromBrowserWindow( FxHttpSessionIndex.SCREEN_TRANSITION_INFO) == null) { this.FormerAspxVirtualPath = ""; } else { this.FormerAspxVirtualPath = this.GetDataFromBrowserWindow( FxHttpSessionIndex.SCREEN_TRANSITION_INFO).ToString(); } // 取得後、直ちに消去 this.DeleteDataFromBrowserWindow( FxHttpSessionIndex.SCREEN_TRANSITION_INFO); if (this.FormerAspxVirtualPath == "") { // 全画面情報無しなので、部品で遷移していない場合の、画面遷移チェック if (HttpContext.Current.Request.HttpMethod.ToUpper() == FxLiteral.GET) { // GET → GETチェック BaseController.SC. CheckScreenTransitionGet(this.AppRelativeVirtualPath); } else { // POST → 強制的にエラー BaseController.SC. CheckScreenTransitionPost(this.AppRelativeVirtualPath); } } else { // 前画面情報有りなので、部品で遷移している場合の、画面遷移チェック BaseController.SC.CheckScreenTransition( this.FormerAspxVirtualPath, this.AppRelativeVirtualPath); } } } else { // 画面遷移チェックしない。 } #endregion #endregion #region 画面GUID関連の処理 // ClientCallback時は実行しない。 if (!this.IsClientCallback) { // 2010/10/04-start # region ボタン履歴情報記録機能のon・off // ボタン履歴情報記録機能のon・offの定義を取得 int tempButtonhistoryMaxQueueLength = FxCmnFunction.GetNumFromConfig( FxLiteral.BUTTON_HISTORY_MAX_QUEUE_LENGTH, FxLiteral.BUTTON_HISTORY_DEFAULT_QUEUE_LENGTH); // ON( > 0) / OFF( <= 0) if (tempButtonhistoryMaxQueueLength > 0) { // ボタン履歴情報記録機能(ON) this.ButtonHistoryRecorder = true; } else { // ボタン履歴情報記録機能(OFF) this.ButtonHistoryRecorder = false; } // isNoSessionフラグ if (isNoSession) { // ボタン履歴情報記録機能(OFF) this.ButtonHistoryRecorder = false; } #endregion #region ボタン履歴情報(キュー)の初期化 if (this.ButtonHistoryRecorder) // 2008/03/29---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // ボタン履歴記録機能が無効な場合、キューの最大長を指定 this.ButtonhistoryMaxQueueLength = tempButtonhistoryMaxQueueLength; } else { // ボタン履歴記録機能が無効な場合は「0」で初期化 this.ButtonhistoryMaxQueueLength = 0; // = tempButtonhistoryMaxQueueLength; } if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { if (Session[FxHttpSessionIndex.BUTTON_HISTORY] == null) { // 新規生成(キューの最大長を指定する) this.Buttonhistory_Queue = new Queue<ArrayList>(this.ButtonhistoryMaxQueueLength); // Sessionに設定 Session[FxHttpSessionIndex.BUTTON_HISTORY] = this.Buttonhistory_Queue; } else { // Session領域から取得 this.Buttonhistory_Queue = (Queue<ArrayList>)Session[FxHttpSessionIndex.BUTTON_HISTORY]; } } #endregion // 2010/10/04-end // 2009/07/31-start // 画面GUIDが新規生成されたか判別するフラグ bool isNewScreenGuid = false; // 親画面別セッション領域の自動削除機能の定義を取得 // ※ 親画面別セッション領域のスコープの最大数 int screenGuidMaxQueueLength = FxCmnFunction.GetNumFromConfig( FxLiteral.SCREEEN_GUID_MAX_QUEUE_LENGTH, 0); if (this.ScreenGuid.Value.Length == 36) { // 画面GUIDがある場合 → 親画面・子画面のポストバック時 #region ボタン履歴(キュー)の再構築 if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // ボタン履歴情報(キュー)から、 // 画面GUID付きボタン履歴情報(スタック)を取得 foreach (ArrayList tempObj in this.Buttonhistory_Queue) // ここはArrayListでないとNG(Buttonhistory_Queue) { // 画面GUIDのインデックスを確認 if (tempObj[0].ToString() == this.ScreenGuid.Value) { // ボタン履歴情報(スタック)を取得 this.Buttonhistory_Stack = (Stack<FxEventArgs>)tempObj[1]; } } // ※ 上記の処理で、Buttonhistory_Stackが取得できない場合に考えられる理由。 // ・ セッションタイムアウトした場合(検出機能OFFの場合) // ・ 古いキャッシュを参照した場合 // ・ スタックがキューからデキューされた場合 if (this.Buttonhistory_Stack == null) { // キャッシュを参照した可能性 throw new FrameworkException( FrameworkExceptionMessage.FX_PROCESSING_STATUS_ERROR[0], String.Format(FrameworkExceptionMessage.FX_PROCESSING_STATUS_ERROR[1], FrameworkExceptionMessage.FX_PROCESSING_STATUS_ERROR_NO_BH_QUEUE)); } // ボタン履歴情報(キュー)の再構築 // ☆ Sessionに再設定する必要がある // (作り直しでインスタンスが変わったため) Session[FxHttpSessionIndex.BUTTON_HISTORY] = FxCmnFunction.RestructuringLRUQueue2( this.Buttonhistory_Queue, this.ScreenGuid.Value, this.ButtonhistoryMaxQueueLength); // ※ ボタン履歴情報(スタック)を操作するのは、イベント ハンドラ } #endregion #region 画面GUIDキューの再構築 // 定義のチェック if (0 < screenGuidMaxQueueLength) { // 画面GUIDキューの再構築 this.RestructureGuidQueue(this.ScreenGuid.Value, out this.ScreenGuid_Queue, FxHttpSessionIndex.SCREEN_GUID_QUEUE, screenGuidMaxQueueLength); } #endregion } else { // 画面GUIDがない場合 → 親画面・子画面の初回ロード時 #region 画面GUIDの初期化 string QueryStringScreenGuid = (string)Request.QueryString[FxHttpQueryStringIndex.PARENT_SCREEN_GUID]; if (QueryStringScreenGuid == null) { QueryStringScreenGuid = ""; } #endregion #region ボタン履歴(スタック)の初期化 if (QueryStringScreenGuid.Length == 36) { // クエリーストリングがある場合 → 自画面は業務モーダル画面で、且つ初回ロード時 // 画面GUIDを設定 this.ScreenGuid.Value = QueryStringScreenGuid; #region ボタン履歴(スタックをキューから取得) if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // ボタン履歴情報(キュー)から、 // 画面GUID付きボタン履歴情報(スタック)を取得 foreach (ArrayList tempObj in this.Buttonhistory_Queue) // ここはArrayListでないとNG(Buttonhistory_Queue) { // 画面GUIDのインデックスを確認 if (tempObj[0].ToString() == this.ScreenGuid.Value) { // ボタン履歴情報(スタック)を取得 this.Buttonhistory_Stack = (Stack<FxEventArgs>)tempObj[1]; } } // 初期値をプッシュ this.Buttonhistory_Stack.Push( new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", "")); } #endregion } else { // クエリーストリングがない場合 → 自画面は親画面で、且つ初回ロード時 // 画面GUIDを新規生成 this.ScreenGuid.Value = Guid.NewGuid().ToString(); isNewScreenGuid = true; #region ボタン履歴(スタックを新規生成) if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // ボタン履歴情報(スタック)を新規生成 this.Buttonhistory_Stack = new Stack<FxEventArgs>(); // 初期値をプッシュ this.Buttonhistory_Stack.Push( new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", "")); // ボタン履歴情報(スタック)をボタン履歴情報(キュー)に格納 // ボタン履歴情報(スタック)に格納するデータ型は配列 ArrayList tempObj = new ArrayList(2); // ここはArrayListでないとNG(Buttonhistory_Queue) // 画面GUIDのインデックス tempObj.Add(this.ScreenGuid.Value); // ボタン履歴情報(スタック) tempObj.Add(this.Buttonhistory_Stack); // キューの最大長を超える場合は、デキューする if (this.ButtonhistoryMaxQueueLength <= this.Buttonhistory_Queue.Count) // 2009/08/12-この行 { // デキュー this.Buttonhistory_Queue.Dequeue(); } // エンキュー this.Buttonhistory_Queue.Enqueue(tempObj); } #endregion } #endregion #region 親画面別セッション領域の自動削除と画面GUIDキューの再構築 // 定義のチェック if (0 < screenGuidMaxQueueLength) { if (isNewScreenGuid) { // 新規画面GUIDが生成された場合 // 画面GUIDキューからセッション自動削除 this.DeleteSessionWithGuidQueueAutomatically( this.ScreenGuid.Value, this.ScreenGuid_Queue, FxHttpSessionIndex.SCREEN_GUID_QUEUE, screenGuidMaxQueueLength); } else { // 新規画面GUIDが生成されなかった場合 // 画面GUIDキューの再構築 this.RestructureGuidQueue(this.ScreenGuid.Value, out this.ScreenGuid_Queue, FxHttpSessionIndex.SCREEN_GUID_QUEUE, screenGuidMaxQueueLength); } } #endregion } // 2009/07/31-end } #endregion #region コントロール取得処理 #region 旧処理 ////#if DEBUG // 2009/09/01-このプリプロセッサ //// PerformanceRecorder perfRec = new PerformanceRecorder(); //// perfRec.StartsPerformanceRecord(); ////#endif //// BUTTON //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_BUTTON), // new System.EventHandler(this.Button_Click), this.ControlHt); ////#if DEBUG // 2009/09/01-このプリプロセッサ //// Debug.WriteLine("BUTTONコントロール検索のパフォーマンス情報:\r\n" + perfRec.EndsPerformanceRecord()); ////#endif //// LINK BUTTON //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_LINK_BUTTON), // new System.EventHandler(this.Button_Click), this.ControlHt); //// IMAGE BUTTON //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_IMAGE_BUTTON), // new System.Web.UI.ImageClickEventHandler(this.ImageButton_Click), this.ControlHt); //// IMAGE MAP //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_IMAGE_MAP), // new System.Web.UI.WebControls.ImageMapEventHandler(this.ImageMap_Click), this.ControlHt); //// DROP DOWN LIST //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_DROP_DOWN_LIST), // new System.EventHandler(this.List_SelectedIndexChanged), this.ControlHt); //// LIST BOX //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_LIST_BOX), // new System.EventHandler(this.List_SelectedIndexChanged), this.ControlHt); //// RADIO BUTTON //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_RADIO_BUTTON), // new System.EventHandler(this.Check_CheckedChanged), this.ControlHt); //// REPEATER //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_REPEATER), // new RepeaterCommandEventHandler(this.Repeater_ItemCommand), this.ControlHt); //// GRIDVIEW //object[] gridViewEventHandlers = new object[]{ // new GridViewCommandEventHandler(this.GridView_RowCommand), // new EventHandler(this.List_SelectedIndexChanged), // new GridViewUpdateEventHandler(this.GridView_RowUpdating), // new GridViewDeleteEventHandler(this.GridView_RowDeleting), // new GridViewPageEventHandler(this.GridView_PageIndexChanging), // new GridViewSortEventHandler(this.GridView_Sorting) //}; //FxCmnFunction.GetCtrlAndSetClickEventHandler( // this, GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_GRIDVIEW), // gridViewEventHandlers, this.ControlHt); #endregion // プレフィックス string prefix = ""; // プレフィックスとイベント ハンドラのディクショナリを生成 Dictionary<string, object> prefixAndEvtHndHt = new Dictionary<string, object>(); // BUTTON prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_BUTTON); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.Button_Click)); } // LINK BUTTON prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_LINK_BUTTON); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.Button_Click)); } // IMAGE BUTTON prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_IMAGE_BUTTON); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.Web.UI.ImageClickEventHandler(this.ImageButton_Click)); } // IMAGE MAP prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_IMAGE_MAP); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.Web.UI.WebControls.ImageMapEventHandler(this.ImageMap_Click)); } // DROP DOWN LIST prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_DROP_DOWN_LIST); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.List_SelectedIndexChanged)); } // LIST BOX prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_LIST_BOX); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.List_SelectedIndexChanged)); } // RADIO BUTTON prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_RADIO_BUTTON); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new System.EventHandler(this.Check_CheckedChanged)); } // REPEATER prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_REPEATER); if (!string.IsNullOrEmpty(prefix)) { prefixAndEvtHndHt.Add(prefix, new RepeaterCommandEventHandler(this.Repeater_ItemCommand)); } // GRIDVIEW prefix = GetConfigParameter.GetConfigValue(FxLiteral.PREFIX_OF_GRIDVIEW); if (!string.IsNullOrEmpty(prefix)) { object[] gridViewEventHandlers = new object[]{ new GridViewCommandEventHandler(this.GridView_RowCommand), new EventHandler(this.List_SelectedIndexChanged), new GridViewUpdateEventHandler(this.GridView_RowUpdating), new GridViewDeleteEventHandler(this.GridView_RowDeleting), new GridViewPageEventHandler(this.GridView_PageIndexChanging), new GridViewSortEventHandler(this.GridView_Sorting)}; prefixAndEvtHndHt.Add(prefix, gridViewEventHandlers); } // コントロール検索&イベントハンドラ設定 FxCmnFunction.GetCtrlAndSetClickEventHandler2(this, prefixAndEvtHndHt, this.ControlHt); #endregion #endregion #region 画面の初期処理(初回ロード、ポストバック) #region 共通UOC処理(UOC_CMNFormInit、UOC_CMNFormInit_PostBack)。 if (this.IsPostBack) { // ポストバック時 // ポストバック時のUOCメソッド this.UOC_CMNFormInit_PostBack(); } else { // 初回起動時 // 初回起動時のUOCメソッド this.UOC_CMNFormInit(); } #endregion #region 個別UOC処理(UOC_FormInit、UOC_FormInit_PostBack)。 if (this.IsPostBack) { // ポストバック時 // ポストバック時のUOCメソッド this.UOC_FormInit_PostBack(); } else { // 初回起動時 // 初回起動時のUOCメソッド this.UOC_FormInit(); } #endregion #endregion // ・ ポストバック時のみ実行 // ・ ClientCallback時は実行しない。 // ・ AjaxExtension時は実行しない。 if (this.IsPostBack && !this.IsClientCallback && !(this.AjaxExtensionStatus == FxEnum.AjaxExtStat.IsAjaxExtension)) { #region ダイアログ(から戻った場合)の後処理(イベント) // 子画面を閉じた後の後処理を判別するフラグのnullチェック if (this.SubmitFlag == null) { // nullの場合 } else { // 値が1・2・3・4に該当する場合、後処理をする。 // ★1:「YES」・「NO」メッセージ・ダイアログの「×」が押され閉じられた場合。 // ★2:「YES」・「NO」メッセージ・ダイアログの「YES」が押された場合。 // ★3:「YES」・「NO」メッセージ・ダイアログの「NO」が押された場合。 // ★4:業務モーダル・ダイアログから戻った場合。 if (((int)FxEnum.SubmitMode.YesNo_X).ToString() == this.SubmitFlag.Value) { // ★ イベントの開始前のUOC処理 this.UOC_PreAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_X, 0, 0, "", "")); // ★:「YES」・「NO」メッセージ・ダイアログの「×」が押され閉じられた場合。 if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // 引数:親画面で押したボタン情報 this.UOC_YesNoDialog_X_Click((FxEventArgs)this.Buttonhistory_Stack.Peek()); } else { // 引数:ダミーのボタン情報 this.UOC_YesNoDialog_X_Click( new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", "")); } // ★ イベントの終了後のUOC処理 this.UOC_AfterAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_X, 0, 0, "", "")); } else if (((int)FxEnum.SubmitMode.YesNo_Yes).ToString() == this.SubmitFlag.Value) { // ★ イベントの開始前のUOC処理 this.UOC_PreAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_YES, 0, 0, "", "")); // ★:「YES」・「NO」メッセージ・ダイアログの「YES」が押された場合。 if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // 引数:親画面で押したボタン情報 this.UOC_YesNoDialog_Yes_Click((FxEventArgs)this.Buttonhistory_Stack.Peek()); } else { // 引数:ダミーのボタン情報 this.UOC_YesNoDialog_Yes_Click( new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", "")); } // ★ イベントの終了後のUOC処理 this.UOC_AfterAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_YES, 0, 0, "", "")); } else if (((int)FxEnum.SubmitMode.YesNo_No).ToString() == this.SubmitFlag.Value) { // ★ イベントの開始前のUOC処理 this.UOC_PreAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_NO, 0, 0, "", "")); // ★:「YES」・「NO」メッセージ・ダイアログの「NO」が押された場合。 if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // 引数:親画面で押したボタンの情報 this.UOC_YesNoDialog_No_Click((FxEventArgs)this.Buttonhistory_Stack.Peek()); } else { // 引数:ダミーのボタン情報 this.UOC_YesNoDialog_No_Click( new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", "")); } // ★ イベントの終了後のUOC処理 this.UOC_AfterAction(new FxEventArgs(FxLiteral.EVENT_AFTER_YES_NO_NO, 0, 0, "", "")); } else if (((int)FxEnum.SubmitMode.Modal).ToString() == this.SubmitFlag.Value) { // ★ イベントの開始前のUOC処理 this.UOC_PreAction(new FxEventArgs(FxLiteral.EVENT_AFTER_MODAL_DIALOG, 0, 0, "", "")); // 親画面で押したボタンの情報 FxEventArgs parentFxEventArgs; //子画面で押されたボタンの情報 FxEventArgs childFxEventArgs; try { if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // POP(Nullチェックしない) childFxEventArgs = (FxEventArgs)this.Buttonhistory_Stack.Pop(); } else { // ダミーのボタン情報 childFxEventArgs = new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", ""); } if (this.ButtonHistoryRecorder) // 2008/11/28---ボタン履歴記録機能が有効な場合のみ実行する(追加)。 { // 親画面で押したボタンの情報 parentFxEventArgs = (FxEventArgs)this.Buttonhistory_Stack.Peek(); } else { // ダミーのボタン情報 parentFxEventArgs = new FxEventArgs(FxLiteral.VALUE_STR_DUMMY_STRING, 0, 0, "", ""); } } catch (Exception ex) { // 子画面でかならずプッシュされるが、異常な状態に陥った場合NullReferenceが発生する。 // エラー発生時や、親画面の後処理でファイルダウンロードのHTTPレスポンスを返した場合など。 throw new FrameworkException( FrameworkExceptionMessage.DIALOG_AFTER_PROCESSING_STATUS_ERROR[0], String.Format(FrameworkExceptionMessage.DIALOG_AFTER_PROCESSING_STATUS_ERROR[1], ex.Message)); } // ★ 業務モーダル・ダイアログの後処理を実行する。 this.UOC_ModalDialog_End(parentFxEventArgs, childFxEventArgs); // ★ イベントの終了後のUOC処理 this.UOC_AfterAction(new FxEventArgs(FxLiteral.EVENT_AFTER_MODAL_DIALOG, 0, 0, "", "")); } } #endregion } } }
/// <summary> /// btnMButton1のクリックイベント /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_btnMButton1_Click(FxEventArgs fxEventArgs) { return "WebForm0"; }
/// <summary>btnMButton3のクリックイベント</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> public string UOC_btnMButton3_Click(FxEventArgs fxEventArgs) { throw new Exception("Ajaxでエラー"); //return ""; }
/// <summary>ログイン</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_btnButton1_Click(FxEventArgs fxEventArgs) { // ここで、入力されたユーザIDと、パスワードをチェックし、ユーザ認証する。 if (this.txtUserID.Text != "") // 現時点では、全て(空文字以外)認証する。 { //// 認証か完了した場合、認証チケットを生成。 //// 第2引数は、「クライアントがCookieを永続化(ファイルとして保存)するかどうか。」 //// を設定する引数であるが、セキュリティを考慮して、falseの設定を勧める。 //FormsAuthentication.SetAuthCookie(this.txtUserID.Text, false); // 認証か完了した場合、認証チケットを生成し、元のページにRedirectする。 // 第2引数は、「クライアントがCookieを永続化(ファイルとして保存)するかどうか。」 // を設定する引数であるが、セキュリティを考慮して、falseの設定を勧める。 FormsAuthentication.RedirectFromLoginPage(this.txtUserID.Text, false); // 認証情報を保存する。 MyUserInfo ui = new MyUserInfo(this.txtUserID.Text, Request.UserHostAddress); UserInfoHandle.SetUserInformation(ui); // 認証Sessionの場合のテスト Session["test"] = "test"; } else { // 認証に失敗した場合は、メッセージを表示する this.lblMessage.Text = "認証に失敗しました。ユーザIDか、パスワードが間違っています。"; // Session消去 this.FxSessionAbandon(); } //// Silverlightを起動 //return "/WSClientSL_sample/WSClientSL_sampleTestPage.aspx"; // 画面遷移はしない(基盤に任せるため)。 return string.Empty; }