jle*_*bke 12 asp.net-mvc mvccontrib
我刚开始在测试项目中使用MVCContrib网格.我很难找到有关如何使用它进行编辑/更新/删除的信息.
任何人都可以向我指出如何将行放入编辑模式的信息,或者如果该网格没有这样的东西,请讨论在MVC中编辑列表数据的最佳实践.
Mar*_*len 14
您可以通过自定义单元格的渲染方式来添加编辑模式渲染.我正在使用以下扩展方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
这允许您指定列在视图模式和编辑模式下的呈现方式.使用第三个操作确定模式,该操作对于要编辑的行应评估为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.")
%>
Run Code Online (Sandbox Code Playgroud)
您可以使用相同的模式在单元格中呈现操作链接(编辑,应用,取消等).如果要一次编辑多行,请确保字段名称是唯一的.
Jor*_*nes 10
看起来好像MVCContrib是一种从模型对象集合构造HTML表的简单方法.它似乎没有任何能力将行放入编辑/更新/删除"模式"类似于WebForms GridView.
但是,看起来您可以按照自己的意愿处理该功能.如果您想要转到单独的页面进行编辑模式,只需在其中一行中添加该行的ID即可.以下内容直接来自: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(); %>
Run Code Online (Sandbox Code Playgroud)
在这里看起来他们想要将用户引导到View Person页面:<%= Html.ActionLink("View Person", "Show", new { id = p.Id })%>
.
祝你好运,编码愉快.
归档时间: |
|
查看次数: |
11581 次 |
最近记录: |