如何在 asp 中使用两个中继器
How to work with two repeaters in asp
我在 asp 中有一个用中继器制作的菜单,菜单的第一行正在工作,我想在第二个中继器的菜单中添加下拉选项,但是从class 我无法访问 Repeater2
。
<asp:Repeater id="Repeater1" runat="server" >
<itemtemplate runat="server">
<ul class="rmenue" runat="server">
<li><a>
<asp:Label runat="server" ID="Label1"
text='<%# Eval("_name") %>' CommandArgument='<%# Eval("_url") %>' />
<asp:Repeater id="Repeater2" runat="server" >
<itemtemplate runat="server">
<ul class="menue" runat="server">
<li><a>
<asp:Label runat="server" ID="Label2"
text='<%# Eval("_name") %>' CommandArgument='<%# Eval("_url") %>' />
</a></li>
</ul>
</itemtemplate>
</asp:Repeater>
</a></li>
</ul>
</itemtemplate>
</asp:Repeater>
public partial class Master : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
List<Buttons> ds = new List<Buttons>();
ds.Add(new Buttons("Home", "blahbla"));
ds.Add(new Buttons("ACCOUNTS", "blahbla"));
ds.Add(new Buttons("ACCOUNTS", "blahbla"));
ds.Add(new Buttons("PLAT", "blahbla"));
ds.Add(new Buttons("EDU", "blahbla"));
ds.Add(new Buttons("ABOUT", "blahbla"));
ds.Add(new Buttons("CONTACT US", "blahbla"));
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
}
public class Buttons
{
public string _name { get; set; }
public string _url { get; set; }
public ArrayList<Buttons> drop = new ArrayList<Buttons>();\this is the data for the second repeater
public Buttons() { }
public Buttons(string name,string url) {
this._name = name;
this._url = url;
}
}
你可以做到这一点,但你需要在后面的代码中完成。
在您的 1st Repeater 中,您需要一个 OnItemDataBound
事件; OnItemDataBound="Repeater1_ItemDataBound"
在代码隐藏中:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var repeater2 = (Repeater)e.Item.FindControl("Repeater2");
//now you can bind etc to repeater2
}
}
我在 asp 中有一个用中继器制作的菜单,菜单的第一行正在工作,我想在第二个中继器的菜单中添加下拉选项,但是从class 我无法访问 Repeater2
。
<asp:Repeater id="Repeater1" runat="server" >
<itemtemplate runat="server">
<ul class="rmenue" runat="server">
<li><a>
<asp:Label runat="server" ID="Label1"
text='<%# Eval("_name") %>' CommandArgument='<%# Eval("_url") %>' />
<asp:Repeater id="Repeater2" runat="server" >
<itemtemplate runat="server">
<ul class="menue" runat="server">
<li><a>
<asp:Label runat="server" ID="Label2"
text='<%# Eval("_name") %>' CommandArgument='<%# Eval("_url") %>' />
</a></li>
</ul>
</itemtemplate>
</asp:Repeater>
</a></li>
</ul>
</itemtemplate>
</asp:Repeater>
public partial class Master : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
List<Buttons> ds = new List<Buttons>();
ds.Add(new Buttons("Home", "blahbla"));
ds.Add(new Buttons("ACCOUNTS", "blahbla"));
ds.Add(new Buttons("ACCOUNTS", "blahbla"));
ds.Add(new Buttons("PLAT", "blahbla"));
ds.Add(new Buttons("EDU", "blahbla"));
ds.Add(new Buttons("ABOUT", "blahbla"));
ds.Add(new Buttons("CONTACT US", "blahbla"));
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
}
public class Buttons
{
public string _name { get; set; }
public string _url { get; set; }
public ArrayList<Buttons> drop = new ArrayList<Buttons>();\this is the data for the second repeater
public Buttons() { }
public Buttons(string name,string url) {
this._name = name;
this._url = url;
}
}
你可以做到这一点,但你需要在后面的代码中完成。
在您的 1st Repeater 中,您需要一个 OnItemDataBound
事件; OnItemDataBound="Repeater1_ItemDataBound"
在代码隐藏中:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var repeater2 = (Repeater)e.Item.FindControl("Repeater2");
//now you can bind etc to repeater2
}
}