动态数据获取字段模板中的当前行数据
本文关键字:数据 数据获取 字段 动态 | 更新日期: 2023-09-27 18:08:34
我有一个动态数据网站,它有一个自定义字段模板,
将在 内部使用的CustomFieldTemplate_Edit.ascx
ListDetails.aspx
表示某些页面。我已经设置了它,我需要它使用UIHint属性,我想实现一些自定义功能。为此,我需要一种方法来获取包含CustomFieldTemplate的当前行的数据。我该怎么做呢?
public partial class CustomFieldTemplate_Edit : System.Web.DynamicData.FieldTemplateUserControl
{
protected void Page_PreRender(object sender, EventArgs e)
{
//Need to get current row data, or at least the primary key here
}
}
我注意到FieldTemplateUserControl有一个Row
属性,但我不知道如何使用它。当我试图访问它时,我得到这个错误:
"数据绑定方法,如Eval()、XPath()和Bind()只能是在绑定控件的上下文中使用。"
我在这里找到了一个解决方案。答案是FieldTemplateUserControl
的Row
属性,但您必须在FieldTemplate的OnDataBinding
事件中访问它。
获得行之后,您可以使用这些扩展方法(取自上面的链接)从中获取实体,这一切都像魅力一样工作。
public static class EntityDataSourceExtensions
{
public static TEntity GetEntityAs<TEntity>(this object dataItem)
where TEntity : class
{
var entity = dataItem as TEntity;
if (entity != null)
return entity;
var td = dataItem as ICustomTypeDescriptor;
if (td != null)
return (TEntity)td.GetPropertyOwner(null);
return null;
}
public static Object GetEntity(this object dataItem)
{
var td = dataItem as ICustomTypeDescriptor;
if (td != null)
return td.GetPropertyOwner(null);
return null;
}
}