Есть ли способ условно загрузить другой пользовательский элемент управления в виде формы редактирования, основанной на каком-либо действии пользователя (Редактировать или Создать)?
Вот как я это сделал
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(); }
Я думаю, что в онлайн-документации Telerik (в разделе Вставка / Обновление / Удаление -> Глава о том, как) есть статья, которая делает именно то, что вам нужно.
Dick