我有一个包含详细信息视图的aspx页面。 此详细信息视图包含一个或多个模板化字段。 我需要的是一个额外的属性(或元数据信息)来确定绑定数据域。
这样的事情会很好(简化):
<asp:DetailsView>
<fields>
<TemplateField DataField="DataField1">
...
</TemplateField>
</fields>
</asp:DetailsView>
是否可以获取属性“DataField”? 否则我将继承TemplateField并添加一个属性:)
答案 0 :(得分:0)
我暂时没有这样做,但我似乎记得如果你将一个公共set / get“DataField”属性添加到TemplateField类,ASP.NET应该使用你在属性中传递的值自动初始化它
答案 1 :(得分:0)
我认为TemplateField的子类化将完成这项工作:
[AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
[DefaultProperty("DataField")]
public class DataTemplateField : TemplateField
{
private String _dataField;
public String DataField
{
get {
return _dataField;
}
set {
_dataField = value;
}
}
}
现在您可以在详细信息视图中使用此字段
<Fields>
<dvt:DataTemplateField HeaderText="Feld1" DataField="DIS">
<ItemTemplate>
<asp:Button runat="server" Text="Button" />
</ItemTemplate>
</dvt:DataTemplateField>
</Fields>
获取该数据
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
foreach(DetailsViewRow row in DetailsView1.Rows)
{
DataControlFieldCell cell = (DataControlFieldCell)row.Cells[1];
if (cell.ContainingField is DataTemplateField)
{
var field = (DataTemplateField)cell.ContainingField;
cell.Enabled = !field.DataField.Equals(fieldToDisable);
}
}
}