gpt4 book ai didi

asp.net-mvc - MvcContrib 网格和显示/编辑模板

转载 作者:行者123 更新时间:2023-12-01 13:57:45 24 4
gpt4 key购买 nike

有没有人遇到过将 ./Views/Shared/DisplayTemplates 和 ./Views/Shared/EditTemplates 与 MvcContrib.UI 网格一起使用的好解决方案?

我想我可以连接一个 CustomItemRenderer,但我更愿意做这样的事情:

<% Html.Grid<Person>(Model.People)
.Sort(new GridSortOptions {Column = Model.Column, Direction = Model.Direction})
.Columns(column =>
{
column.For(e=>e.Name);
column.DisplayFor(e=>e.StartDate); // <-- I'd like to do this for DateTime.asxc
}).Render();
%>

网格中可能已经有一些东西可以做到这一点,但我只是还没有找到它。任何帮助将不胜感激。

谢谢

哈尔

最佳答案

我通过修改 GridRenderer 和 GridColumn 类中的源代码实现了这一点。 GridColumn的变化是增加了以下功能:

public object GetRawValue(T instance)
{
if (!_cellCondition(instance))
{
return null;
}

var value = _columnValueFunc(instance);
return value;
}

那么GridRenderer中的改变就是在RenderItem函数中进行如下修改:

 protected virtual void RenderItem(GridRowViewData<T> rowData)
{
BaseRenderRowStart(rowData);

HtmlHelper<T> html = new HtmlHelper<T>(Context, new ViewPage());
foreach (var column in VisibleColumns())
{
//A custom item section has been specified - render it and continue to the next iteration.
if (column.CustomItemRenderer != null)
{
column.CustomItemRenderer(new RenderingContext(Writer, Context, _engines), rowData.Item);
continue;
}

RenderStartCell(column, rowData);

var cellValue = column.GetRawValue(rowData.Item);
if (cellValue != null)
{
//RenderText(cellValue.ToString());
MvcHtmlString value = html.DisplayFor<T, object>(m => cellValue);
string str = (value.ToString() == string.Empty) ? cellValue.ToString() : value.ToString();
if (column.HtmlEncode == true)
{
str = (value.ToString() == string.Empty) ? HttpUtility.HtmlEncode(cellValue.ToString()) : value.ToHtmlString();
}
RenderText(str);
}

RenderEndCell();
}

BaseRenderRowEnd(rowData);
}

执行此操作后,网格将使用找到的模板。我只使用 DisplayTemplates 进行了测试,因为这就是我所需要的,但它也应该适用于 EditorTemplates,只需稍作更改。

关于asp.net-mvc - MvcContrib 网格和显示/编辑模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com