如何获取UserControl标记内的控件?
所以如果这是在Page:
上<ME:NewControl ID="tblCustomList" runat="server">
// ... these controls will be used in my UserControl.aspx
</ME:NewControl>
如何在UserControl中访问这些控件?
例如,Table类执行此操作:
<asp:Table ID="tblNormal" runat="server">
<asp:TableRow>
<asp:TableCell>Thing 1</asp:TableCell>
<asp:TableCell>Thing 2</asp:TableCell>
</asp:TableRow>
</asp:Table>
当我这样做时,我收到一条错误,说我的UserControl“没有名为'TableRow'的公共属性:
<ME:NewControl ID="tblCustomList" runat="server">
<asp:TableRow>
<asp:TableCell>Thing 1</asp:TableCell>
<asp:TableCell>Thing 2</asp:TableCell>
</asp:TableRow>
</ME:NewControl>
我发现this sample有助于扩展Table类,但它不是完全我想要做的事情。
我还发现this description如何使用模板化控件,我不确定是否可以使用。
答案 0 :(得分:1)
原来我只需要这样的东西:
public TableRow DTHeader { get; set; }
protected override void OnInit(EventArgs e)
{
tblCollection.Rows.Add(DTHeader);
base.OnInit(e);
}
然后在我的页面上使用它:
<ME:NewControl ID="tblCustomList" runat="server">
<DTHeader>
<asp:TableCell></asp:TableCell>
//...
</DTHeader>
</ME:NewControl>
答案 1 :(得分:0)
我不确定我是否100%理解这个问题。
但是,如果您使用名为Row的自定义控件,则可以将集合添加到主表用户控件。
您可以使用通用列表执行此操作。这应该使您能够像普通的aspx控件一样添加它们。
我这里没有代码示例,但我已多次完成。
答案 2 :(得分:0)
我不确定我理解你的问题。
您可以通过使用tblCustomList.Controls访问控件服务器端,然后您可以循环并添加到您的usercontrol。但同样,我不确定你在问什么。
答案 3 :(得分:0)
您引用的sample似乎是您要完成的任务 您是否在后面的代码中添加了以下内容?
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class CustomTableCreateControlCollection : Table
{
protected override ControlCollection CreateControlCollection()
{
// Return a new ControlCollection
return new ControlCollection(this);
}
}
}