如何在telerik rad网格中有条件地加载编辑模板?

如何在telerik rad网格中有条件地加载编辑模板?,telerik,telerik-grid,Telerik,Telerik Grid,有没有一种方法可以根据某些用户操作(编辑与创建)有条件地将不同的用户控件加载为编辑表单?我认为Telerik在线文档(在插入/更新/删除->如何章节下)中有一篇文章正是您想要的 迪克,我就是这样做的 protected void Page_Init(object sender, EventArgs e) { ctlBenefitLimitsGrid.MasterTableView.EditFormSettings.EditFormType = Grid

有没有一种方法可以根据某些用户操作(编辑与创建)有条件地将不同的用户控件加载为编辑表单?

我认为Telerik在线文档(在插入/更新/删除->如何章节下)中有一篇文章正是您想要的


迪克,我就是这样做的

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