Exemple #1
0
        /// <summary>
        /// Shippers テーブルのレコード全件を DataReader として取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <returns>Shippers テーブルのレコードを表示するPartialViewResult</returns>
        public ActionResult SelectAll_DR(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      "CrudMu", "button4", "SelectAll_DR",
                      ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                      new MyUserInfo("aaa", "192.168.1.1"));

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();

            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string message = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                // Ajax.BeginFormでは、UpdateTargetIdで指定した
                // ターゲット以外を更新する場合、JavaScriptでの対応が必要。
                // #ここではjQueryを使用している。
                string scriptText = "$('#lblMessage').text('" + message + "');";
                return(JavaScript(scriptText));
            }
            else
            {
                // 結果(正常系)
                CrudModel model = new CrudModel();
                model.shippers = new DataSets.DsNorthwind.ShippersDataTable();
                DataTable dt = (DataTable)testReturnValue.Obj;

                foreach (DataRow row in dt.Rows)
                {
                    DataSets.DsNorthwind.ShippersRow srow = model.shippers.NewShippersRow();
                    srow.ShipperID   = int.Parse(row[0].ToString());
                    srow.CompanyName = row[1].ToString();
                    srow.Phone       = row[2].ToString();

                    model.shippers.Rows.Add(srow);
                }

                // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。
                return(PartialView("_ChartView", model));
            }
        }
        /// <summary>
        /// Shippers テーブルのレコード全件を DataReader として取得する
        /// </summary>
        /// <param name="ddlDap">データプロバイダ</param>
        /// <param name="ddlMode1">静的、動的のクエリ モード(共通Dao選択時)</param>
        /// <param name="ddlMode2">静的、動的のクエリ モード</param>
        /// <param name="ddlExRollback">コミット、ロールバック</param>
        /// <param name="form">入力フォームの情報</param>
        /// <returns>再描画(ViewResult)</returns>
        public ActionResult SelectAll_DR(string ddlDap, string ddlMode1, string ddlMode2, string ddlExRollback, FormCollection form)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      "CrudMu", "button4", "SelectAll_DR",
                      ddlDap + "%" + ddlMode1 + "%" + ddlMode2 + "%" + ddlExRollback,
                      new MyUserInfo("aaa", "192.168.1.1"));

            // 戻り値
            TestReturnValue testReturnValue;

            // 分離レベルの設定
            DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction;

            // B層呼出し+都度コミット
            LayerB layerB = new LayerB();

            testReturnValue = (TestReturnValue)layerB.DoBusinessLogic(testParameterValue, iso);

            // 結果表示するメッセージ
            string    message = "";
            CrudModel model   = new CrudModel();

            // 値の復元のため、CopyInputValuesを呼び出す。
            model.CopyInputValues(form);

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                message  = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";";
                message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";";
                message += "ErrorInfo:" + testReturnValue.ErrorInfo;

                // メッセージを設定。
                model.Message = message;
            }
            else
            {
                // 結果(正常系)
                model.shippers = new DataSets.DsNorthwind.ShippersDataTable();
                DataTable dt = (DataTable)testReturnValue.Obj;

                foreach (DataRow row in dt.Rows)
                {
                    DataSets.DsNorthwind.ShippersRow srow = model.shippers.NewShippersRow();
                    srow.ShipperID   = int.Parse(row[0].ToString());
                    srow.CompanyName = row[1].ToString();
                    srow.Phone       = row[2].ToString();

                    model.shippers.Rows.Add(srow);
                }
            }

            // Html.BeginFormでは、全体更新。
            return(View("Index", model));
        }