gpt4 book ai didi

asp.net - 如何创建类似 BoundField 的东西,可以在 FormView 的模板中使用?

转载 作者:行者123 更新时间:2023-12-04 06:16:45 24 4
gpt4 key购买 nike

似乎 BoundField 之类的控件只能在数据绑定(bind)容器中工作,例如一个 GridView,其中有重复的数据。我想知道如何编写像 BoundField 这样可以工作的东西,例如里面ItemTemplate一个数据绑定(bind)的 FormView。看看下面的 MyFormViewBoundField 与执行此操作的原始模板方式相比更具可读性。

目前的做法:

<ItemTemplate>
<div class="span-12 last">
<dl class="name-value">
<dt>Property Type</dt>
<dd><%# Eval("property_type_full") %></dd>
</dl>
</div>
</ItemTemplate>

与我想做的相比:
<ItemTemplate>
<div class="span-12 last">
<mystuff:MyFormViewBoundField LabelText="PropertyType" DataValueField="property_type_full" />
</div>
</ItemTemplate>

最佳答案

您可以使用简单的服务器控件来执行此操作,并根据需要进行自定义。

public class DataBindField : CompositeControl
{
private HtmlGenericControl dt;
private HtmlGenericControl dd;

public string LabelText { get; set; }

public string DataValueField { get; set; }

protected override void OnDataBinding(EventArgs e)
{
EnsureChildControls();
base.OnDataBinding(e);

object dataItem = DataBinder.GetDataItem(NamingContainer);
if (dataItem != null)
{
dd.InnerText = DataBinder.Eval(dataItem, DataValueField) as string;
}
dt.InnerText = LabelText;
}

protected override void CreateChildControls()
{
base.CreateChildControls();
var dl = new HtmlGenericControl("dl");
dt = new HtmlGenericControl("dt");
dd = new HtmlGenericControl("dd");

dl.Controls.Add(dt);
dl.Controls.Add(dd);

Controls.Add(dl);
}
}

显然,添加对 ViewState 或设计时支持的支持需要更多的工作,但这是基础。

关于asp.net - 如何创建类似 BoundField 的东西,可以在 FormView 的模板中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148238/

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