从aspx页面获取属性
我有一个包含detailsview的aspx页面。 此详细信息视图包含一个或多个模板字段。 我需要的是一个额外的属性(或元数据信息)来确定绑定的数据字段。从aspx页面获取属性
这样的一些东西将是很好(简体):
<asp:DetailsView>
<fields>
<TemplateField DataField="DataField1">
...
</TemplateField>
</fields>
</asp:DetailsView>
是有可能得到属性“数据字段”? 否则我会继承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;
}
}
}
现在u可以使用该领域中的DetailsView这样
<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);
}
}
}
子类化不会在你的情况下做那件事。你所做的是将一个字符串值赋给属性“DataField”。这不会绑定一个值。 – Arthur 2009-09-28 08:21:45
我需要知道哪个字段由templatefield表示。 某些字段对特定用户是只读的,因此需要禁用字段。 – 2009-09-28 08:42:32
这不是很好,但它解决了我的问题。 – 2010-02-26 14:02:48
我还没有这样做了一段时间,但我似乎记得如果您添加一个公共设置/获取“DataField”属性到TemplateField类,ASP。 NET应该用你在属性中传递的值自动初始化它。
怎么办你想实现?为什么你需要一些额外的数据? – Arthur 2009-09-28 08:22:41
你看过DetailsView上的可用事件吗? – 2009-09-28 09:32:21
是否有适当的事件? 扩展TemplateField,似乎是最干净的方式 – 2009-09-28 10:17:59