Pregunta Usa la grilla MVCContrib para editar


Empecé a usar la grilla MVCContrib en un proyecto de prueba. Estoy teniendo dificultades para encontrar información sobre cómo usarlo para editar / actualizar / eliminar.

¿Alguien puede indicarme información sobre cómo poner una fila en el modo de edición, o si no existe tal cosa para esa cuadrícula, discutir una mejor práctica para editar los datos de la lista en MVC?


11
2018-05-05 23:32


origen


Respuestas:


Parece que MVCContrib es una forma simple de construir la tabla HTML a partir de una colección de objetos modelo. No parece que tenga la capacidad de poner una fila en editar / actualizar / eliminar "modo" similar al WebForms GridView.

Sin embargo, parece que puedes manejar esa funcionalidad como quieras. Si desea ir a una página separada para el modo de edición, simplemente coloque un enlace en una de las columnas con la identificación de esa fila. Lo siguiente se toma directamente de: 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(); %>

Aquí parece que quieren dirigir al usuario a la página Ver persona: <%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>.

Buena suerte y feliz codificación.


10
2018-05-06 00:18



Puede agregar la representación del modo de edición personalizando la forma en que se procesa una celda. Estoy usando el siguiente método de extensión:

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

Esto le permite especificar cómo se representa la columna en el modo de visualización y en el modo de edición. El modo se determina utilizando una tercera acción que debe evaluarse como verdadera para la fila que desea editar.

Usar esto en una vista se vería así:

<%= 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.")
%>

Puede usar el mismo patrón para representar enlaces de acción (editar, aplicar, cancelar, etc.) en una celda. Si desea editar varias filas a la vez, asegúrese de que los nombres de los campos sean únicos.


14
2018-06-16 16:23