Пользовательский шаблон редактора AJAX Telerik MVC

Я использую MVC version of the Telerik controls с ASP.NET MVC и razor view engine. У меня есть сетка AJAX. Когда я нажимаю «Изменить», я хочу, чтобы данные отображались в стиле формы. Но проблема в том, что я хочу переставить элементы управления в форме так, как я хочу, чтобы они отображались. Как бы я сделал что-то подобное? В настоящее время элементы управления находятся друг под другом. Я хочу создать свой собственный макет для редактирования.

У меня есть много других элементов управления в представлении, одним из которых является эта сетка. Мой объект модели представления имеет список дочерних объектов, и я хочу использовать свою сетку для заполнения этого списка.

Модель представления для моего представления:

public class EditGrantApplicationViewModel
{
   public string EmployeeNumber { get; set; }
   public string Title { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
   // Other properties

   // I want this to be populated from the grid
   public IEnumerable<Children> Children { get; set; }
}

Код моей сетки для списка детей:

@(Html.Telerik().Grid(Model.Children)
   .Name("grdChildren")
   .Columns(column =>
      {
         column.Bound(x => x.Id);
         column.Bound(x => x.FullName);
      }
   )
   .DataKeys(keys =>
      {
         keys.Add(x => x.Id);
      }
   )
   .DataBinding(dataBinding =>
      {
         dataBinding.Ajax()
            .Select("_SelectAjaxEditing", "Grid")
            .Insert("_InsertAjaxEditing", "Grid")
            .Update("_SaveAjaxEditing", "Grid")
            .Delete("_DeleteAjaxEditing", "Grid");
      }
   )
   .ToolBar(commands => commands.Insert().ButtonType(GridButtonType.Text))
   .Editable(editing => editing.Mode(GridEditMode.InForm))
)

Я не уверен, как должен выглядеть мой шаблон редактора? Что он должен расширять? И я не могу заставить его отображаться во встроенной форме. Я работал с образцом Брэда Уилсона, но не понял его. Может кто-нибудь объяснить, что происходит?

Еще вопросы... На моей другой странице у меня есть сетка с другими элементами управления HTML на странице. Если я занят редактированием данных в сетке и нажимаю «Вставить», как я могу предотвратить проверку других элементов управления на странице?


person Brendan Vogt    schedule 01.09.2011    source источник


Ответы (1)


Вы можете определить собственный шаблон редактора для своей модели и расположить поля по своему усмотрению. Эта библиотека кода проект показывает как.

person Atanas Korchev    schedule 01.09.2011
comment
Спасибо. Я вижу, что есть файл .ascx. Где это используется на странице индекса, где находится сетка? Я не могу понять эту часть? - person Brendan Vogt; 01.09.2011
comment
Вот как работают шаблоны редактора ASP.NET MVC. Прочтите эту запись в блоге для более подробного объяснения этой функции: bradwilson.typepad.com/blog/2009/10/ - person Atanas Korchev; 01.09.2011
comment
Вам необходимо создать шаблон редактора ASP.NET MVC для вашей модели. Как только он заработает с Html.EditorForModel, он будет работать и с сеткой. Поэкспериментируйте с библиотекой кода — отметьте ~/Views/Shared/EditorTemplates. Я не знаю, как помочь дальше. - person Atanas Korchev; 02.09.2011
comment
Это работает как по волшебству. Если ваша модель называется Customer, вам нужно создать частичное представление с именем Customer.cshtml и поместить его в ~/Views/Shared/EditorTemplates. ASP.NET MVC подхватит это при использовании Html.EditorForModel. - person Atanas Korchev; 02.09.2011
comment
Спасибо. Но что, если я не хочу использовать EditorFor? - person Brendan Vogt; 06.09.2011
comment
Я не понимаю. Что вы имеете в виду, что не хотите использовать EditorFor? Что еще вы хотите использовать? - person Atanas Korchev; 06.09.2011
comment
Это не сработает. Я все еще не думаю, что вы понимаете мою ситуацию. У меня есть модель представления под названием EditGrantApplicationViewModel, и в модели представления у меня есть список клиентов, который я хочу отображать в сетке (на странице также есть другие элементы управления, такие как текстовые поля). Итак, как указать эту модель в моем файле Cusotmer.cshtml? Это не сработает @model MyProject.ViewModels.EditGrantApplicationViewModel.Cusotmer - person Brendan Vogt; 06.09.2011
comment
Здесь ОГРОМНЫЙ пробел в общении. Я хочу указать свои собственные текстовые поля, как я делаю @Html.TextBoxFor(x => x.EmployeeNumber, new { maxlength = 6, size = 6 }) - person Brendan Vogt; 06.09.2011
comment
Может быть, вы скомпилируете мне решение, учитывая мою ситуацию? Могу я получить ваш адрес электронной почты, чтобы мы могли перевести это в автономный режим? - person Brendan Vogt; 06.09.2011
comment
Нет, боюсь, я не могу этого сделать. Я уже предоставил рабочий проект, показывающий, как настроить форму редактирования сетки. Я не могу дать вам свой адрес электронной почты и подготовить образец проекта на основе ваших требований. Я не думаю, что stackoverflow предназначен для такой поддержки. - person Atanas Korchev; 06.09.2011
comment
Должны ли мы перенести это на форумы Telerik? Там обычно обмениваются кодами. Ваш образец не подходит для того, что я пытаюсь сделать. И я не знаю, почему Телерик так все усложняет! - person Brendan Vogt; 06.09.2011
comment
В вопросе говорится о пользовательском шаблоне редактора AJAX Telerik MVC, и проект связанной библиотеки кода показывает именно это. Пожалуйста, используйте пример проекта в качестве начала и попробуйте настроить его. Конечно, это не 100% то, что вам нужно, но вы не можете ожидать, что какой-либо возможный проект будет реализован в качестве образца. - person Atanas Korchev; 06.09.2011