Используйте сетку MVCContrib для редактирования - PullRequest
11 голосов
/ 06 мая 2009

Я только начал использовать сетку MVCContrib в тестовом проекте. Мне трудно найти информацию о том, как использовать его для редактирования / обновления / удаления.

Может ли кто-нибудь указать мне информацию о том, как перевести строку в режим редактирования, или, если для этой сетки нет такого, обсудите лучшие практики редактирования данных списка в MVC.

Ответы [ 2 ]

14 голосов
/ 16 июня 2009

Вы можете добавить режим редактирования, настроив способ визуализации ячейки. Я использую следующий метод расширения:

public static IGridColumn<T> Action<T>( this IGridColumn<T> column, Func<T, string> viewAction, Func<T, string> editAction, Func<T,bool> editMode )
{
   column.CustomItemRenderer = ( context, item ) => context.Writer.Write( "<td>" + ( editMode( item ) ? editAction( item ) : viewAction( item ) ) + "</td>" );
   return column;
}

Это позволяет вам указать способ визуализации столбца в режиме просмотра и в режиме редактирования. Режим определяется с помощью третьего действия, которое должно иметь значение true для строки, которую вы хотите редактировать.

Использование этого вида будет выглядеть примерно так:

<%= Html.Grid( Model.Items ).Columns( column => {
     column.For( x => x.Name ).Action(
        item => Html.ActionLink( item.Name, "SomeAction" ), 
        item => Html.TextBox( "Item.Name", item.Name ),
        item => ( Model.SelectedItem == item ) );
    } )
    .Empty("No items found.")
%>

Вы можете использовать тот же шаблон для визуализации ссылок действий (редактировать, применять, отменять и т. Д.) В ячейке. Если вы хотите редактировать несколько строк одновременно, убедитесь, что имена полей уникальны.

10 голосов
/ 06 мая 2009

Кажется, что MVCContrib - это простой способ создать таблицу HTML из коллекции объектов модели. Похоже, что он не имеет возможности поместить строку в «режим» редактирования / обновления / удаления, аналогичный WebForms GridView.

Однако, похоже, вы можете справиться с этой функциональностью так, как вам хочется. Если вы хотите перейти на отдельную страницу в режиме редактирования, просто поместите ссылку в один из столбцов с идентификатором этой строки. Следующее взято непосредственно из: http://www.jeremyskinner.co.uk/2009/03/01/mvccontrib-grid-part-5-the-action-syntax/

<% Html.Grid(Model).Columns(column => {
            column.For(x => x.Id).Named("Person ID");
            column.For(x => x.Name);
            column.For(x => x.Gender);
            column.For(x => x.DateOfBirth);
                column.For("View Person").Named("").Action(p => { %>
                     <td style="font-weight:bold">
                    <%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>
                 </td>
                <% });
        }).RowStart((p,row)  => {     
             if (row.IsAlternate) { %>
                   <tr style="background-color:#CCDDCC">
             <%  }  else  { %>
                 <tr>
             <% }
    }).Render(); %>

Здесь похоже, что они хотят направить пользователя на страницу просмотра персоны: <%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>.

Удачи и удачного кодирования.

...