我一直在搜索msdn,但我不知道我应该搜索什么...我如何访问用户控件的子元素,我不希望创建一个新的自定义控件呈现自己的HTML ,html输出是ascx文件中的简单转发器,它看起来像这样:
<asp:repeater id="rpContent" runat="server" onitemdatabound="rpContent_itemdatabound">
<headertemplate><ul class="displaypanel"></headertemplate>
<itemtemplate>
<li class="on">
<a href="javascript://">tab header</a>
<div>
what goes here is tab content
</div>
</li>
</itemtemplate>
<footertemplate>
</ul></footertemplate>
</asp:repeater>
我希望实现看起来像这样:
<bni:tabs id="tabs" runat="server">
<tab srcId="id1" />
<tab srcId="id2" />
</bni:tabs>
所以基本上在后面的代码中,我想检索数组或列表中的子集合,并使用id做一些工作,然后将结果集绑定到我的转发器...
答案 0 :(得分:0)
我相信你要找的是数据绑定到列表。
<ItemTemplate>
<tr>
<td> <%# DataBinder.Eval(Container.DataItem, "Name") %></td>
<td> <%# DataBinder.Eval(Container.DataItem, "Ticker") %></td>
</tr>
</ItemTemplate>
在代码隐藏中:
class theData { public string Name { get; set; } public string Ticker { get; set; } }
var source = new List<theData>();
rpContent.DataSource = source;
rpContent.DataBind();
答案 1 :(得分:0)
那么你想以儿童控制的形式访问它吗?
protected void rpContent_itemdatabound(object sender, EventArgs e)
{
var theTabs = rpContent.FindControl("tabs") as tabs;
if (theTabs != null)
...
}
答案 2 :(得分:0)
我又一次找到了解决方案!
后面的ascx代码
[ParseChildren(true,"MyTabs")]
public partial class QucikTabsControl : System.Web.UI.UserControl
{
private List<Tab> _myTabs;
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<Tab> MyTabs
{
get
{
if (_myTabs == null)
{
_myTabs = new List<Tab>();
}
return _myTabs;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
MyRepeater.DataSource = MyTabs.ToArray();
MyRepeater.DataBind();
}
somehwere in app_code cs files
public class Tab
{
private string _sectionId;
public Tab(): this(String.Empty)
{
}
public Tab(string sectionid)
{
_sectionId = sectionid;
}
[Category("Behavior"),
DefaultValue(""),
Description("Section Id"),
NotifyParentProperty(true),
]
public String SectionId
{
get
{
return _sectionId;
}
set
{
_sectionId = value;
}
}
}
在您的aspx页面中
<bni:tabs id="s" runat="server">
<w:tab sectionid="23" />
</bni:tabs>
我遇到这个麻烦的原因是基本的:我是前端开发人员,不想在代码中看到单个html标签!