1

いくつかのユーザーアクション(編集と作成)に基づいて、さまざまなユーザーコントロールを編集フォームとして条件付きでロードする方法はありますか?

4

2 に答える 2

2

これが私がやった方法です

  protected void Page_Init(object sender, EventArgs e)
        {
            ctlBenefitLimitsGrid.MasterTableView.EditFormSettings.EditFormType = GridEditFormType.WebUserControl;
            ctlBenefitLimitsGrid.ItemDataBound += BenefitLimitsGrid_ItemDataBound;
            ctlBenefitLimitsGrid.ItemCommand += BenefitLimitsGrid_ItemCommand;

            ctlBenefitLimitsGrid.MasterTableView.EditFormSettings.EditFormType = GridEditFormType.WebUserControl;
        }

        void BenefitLimitsGrid_ItemCommand(object source, GridCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Edit":
                    e.Item.OwnerTableView.IsItemInserted = false;
                    ctlBenefitLimitsGrid.MasterTableView.EditFormSettings.UserControlName =
                        @"UserControls/BenefitLimitEdit.ascx";

                    break;
                case "Add":
                    {
                        InsertAddControl(e);
                        break;
                    }
                case "Delete":
                    var benefitLimitId = Convert.ToInt32(e.CommandArgument);
                    Presenter.Delete(benefitLimitId);
                    Presenter.LoadView();
                    break;

                case "Save":
                    IEditView item;

                    if (e.Item.GetType() == typeof(GridEditFormInsertItem))
                    {
                        item =
                            (IEditView)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
                    }
                    else
                    {
                        item = ((GridDataItem)e.Item).EditFormItem.FindControl(GridEditFormItem.EditFormUserControlID) as IEditView;
                    }
                    if (item != null && item.HasErrors)
                    {
                        e.Canceled = true;
                        return;
                    }

                    e.Item.Edit = false;
                    ctlBenefitLimitsGrid.MasterTableView.ClearEditItems();
                    Presenter.LoadView();

                    break;
                case "SaveAndNew":
                    {
                        var benefitLimitCreate = (IBenefitLimitCreate)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);

                        if (benefitLimitCreate.HasErrors)
                        {
                            e.Canceled = true;
                            return;
                        }

                        Presenter.LoadView();
                        InsertAddControl(e);

                        break;
                    }
            }
        }

        private void InsertAddControl(GridCommandEventArgs e)
        {
            ctlBenefitLimitsGrid.MasterTableView.ClearEditItems();

            ctlBenefitLimitsGrid.MasterTableView.EditFormSettings.UserControlName = @"UserControls/BenefitLimitCreate.ascx";

            e.Item.OwnerTableView.InsertItem();

            var insertedItem = e.Item.OwnerTableView.GetInsertItem();

            var ctlBenefitLimitCreate = (BenefitLimitCreate)insertedItem.FindControl(GridEditFormItem.EditFormUserControlID);

            ctlBenefitLimitCreate.Presenter.LoadView();
        }
于 2010-08-30T17:22:58.440 に答える
0

Telerik のオンライン ドキュメント (挿入/更新/削除 -> ハウツーの章の下) に、まさにあなたが求めていることを行う記事があったと思います。

ディック

于 2010-05-25T06:00:54.517 に答える