希望实现的格式显示 <h1 id="bar1" onclick="menuclick('submenu1','bar1');">一级栏目名称1</h1>
<ul id="submenu1">
<li><a href="">一级栏目1子栏目名称1</a></li>
<li><a href="">一级栏目1子栏目名称2</a></li>
<li><a href="">一级栏目1子栏目名称3</a></li>
</ul>
<h1 id="bar2" onclick="menuclick('submenu2','bar2');">一级栏目名称2</h1>
<ul id="submenu2">
<li><a href="">一级栏目2子栏目名称1</a></li>
<li><a href="">一级栏目2子栏目名称2</a></li>
<li><a href="">一级栏目2子栏目名称3</a></li>
</ul>
前台代码
<asp:Repeater ID="RepClass" runat="server" OnItemDataBound="RepClass_ItemDataBound">
<ItemTemplate>
<asp:HiddenField ID="txtClassLayer" runat="server" Value='<%#Eval("ChannelLayer") %>' />
<asp:HiddenField ID="txtClassName" runat="server" Value='<%#Eval("ChannelName") %>' />
<asp:HiddenField ID="txtClassID" runat="server" Value='<%#Eval("ChannelID") %>' />
<asp:Literal ID="LitFirst" runat="server"></asp:Literal>
</ItemTemplate>
</asp:Repeater>
后台代码
protected void RepClass_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Literal LitFirst = (Literal)e.Item.FindControl("LitFirst");
HiddenField txtClassLayer = (HiddenField)e.Item.FindControl("txtClassLayer");
HiddenField txtClassName = (HiddenField)e.Item.FindControl("txtClassName");
HiddenField txtClassID=(HiddenField)e.Item.FindControl("txtClassID");
string LitStyle = "<ul>{1}</ul>";
string LitImg1 = txtClassName.Value;
string LitImg2 = "<li>" + LitImg1 + "</li>";
int classLayer = Convert.ToInt32(txtClassLayer.Value);
if (classLayer == 1)
{
LitFirst.Text = "<h1><a href='Categroy.aspx?cid=" + Convert.ToInt32(txtClassID.Value) + "'>" + LitImg1 + "</a></h1>";
}
else
{
LitFirst.Text = string.Format(LitStyle, classLayer * 18, LitImg2, LitImg1);
}
}
}
现在只能做成这样的格式 不是希望的格式,请高手帮忙改下代码
<h1>一级栏目名称1</h1>
<ul><li>一级栏目名称1子栏目名称1</li></ul>
<ul><li>一级栏目名称1子栏目名称2</li></ul>
<ul><li>一级栏目名称1子栏目名称3</li></ul>
<ul id="submenu1">
<li><a href="">一级栏目1子栏目名称1</a></li>
<li><a href="">一级栏目1子栏目名称2</a></li>
<li><a href="">一级栏目1子栏目名称3</a></li>
</ul>
<h1 id="bar2" onclick="menuclick('submenu2','bar2');">一级栏目名称2</h1>
<ul id="submenu2">
<li><a href="">一级栏目2子栏目名称1</a></li>
<li><a href="">一级栏目2子栏目名称2</a></li>
<li><a href="">一级栏目2子栏目名称3</a></li>
</ul>
前台代码
<asp:Repeater ID="RepClass" runat="server" OnItemDataBound="RepClass_ItemDataBound">
<ItemTemplate>
<asp:HiddenField ID="txtClassLayer" runat="server" Value='<%#Eval("ChannelLayer") %>' />
<asp:HiddenField ID="txtClassName" runat="server" Value='<%#Eval("ChannelName") %>' />
<asp:HiddenField ID="txtClassID" runat="server" Value='<%#Eval("ChannelID") %>' />
<asp:Literal ID="LitFirst" runat="server"></asp:Literal>
</ItemTemplate>
</asp:Repeater>
后台代码
protected void RepClass_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Literal LitFirst = (Literal)e.Item.FindControl("LitFirst");
HiddenField txtClassLayer = (HiddenField)e.Item.FindControl("txtClassLayer");
HiddenField txtClassName = (HiddenField)e.Item.FindControl("txtClassName");
HiddenField txtClassID=(HiddenField)e.Item.FindControl("txtClassID");
string LitStyle = "<ul>{1}</ul>";
string LitImg1 = txtClassName.Value;
string LitImg2 = "<li>" + LitImg1 + "</li>";
int classLayer = Convert.ToInt32(txtClassLayer.Value);
if (classLayer == 1)
{
LitFirst.Text = "<h1><a href='Categroy.aspx?cid=" + Convert.ToInt32(txtClassID.Value) + "'>" + LitImg1 + "</a></h1>";
}
else
{
LitFirst.Text = string.Format(LitStyle, classLayer * 18, LitImg2, LitImg1);
}
}
}
现在只能做成这样的格式 不是希望的格式,请高手帮忙改下代码
<h1>一级栏目名称1</h1>
<ul><li>一级栏目名称1子栏目名称1</li></ul>
<ul><li>一级栏目名称1子栏目名称2</li></ul>
<ul><li>一级栏目名称1子栏目名称3</li></ul>
解决方案 »
- 一个javascript图片翻转效果做成后台动态添加删除的。
- freetextbox复制过来的内容(图片)换成自己的
- 怎么插入一个列的值等于自动编号列的值?
- 模态窗口如何返回多个参数,或者数组
- 用户控件实现上传功能的问题
- aspnet_wp.exe进程问题
- ASP.NET中弹出对话框的高深问题
- sqldatareader数据绑定到DATAGRID,分页功能怎么不好用呢?
- DataGrid 和 DataList 到底在表现上有什么区别?
- 请问,如果为dataset的某个表增加一列数据;
- 怎么用sql将查询出来的一个int型的字段结果返回成一个字符串
- 关于Ⅴisual studio 2010做网站开发的问题
你直接在item里写好,你的菜单模式,直接把值绑定就OK啦,不用在后台拼接html的
里边有ID这个自动变化的值id="bar1"
。。
如果可以,你直接从数据库里获取嘛
onclick事件可以在后台指定的,这参数就肯定可以解决嘛
for (int i = 0; i < repeater.items.Count ; i++)
{
这里查找你绑定数据的控件,假定查找出来的是Ctrols
Ctrols.Attributes.Add("onclick", "javascript:alertinfo('alertdiv','" + id + "');");
Ctrols.Attributes.Add("style", "cursor:hand"); }
你参考下,临时写的
<ItemTemplate>
<asp:HiddenField ID="txtClassID" runat="server" Value='<%#Eval("ChannelID") %>' />
<h1 id="bar<%#Container.ItemIndex %>" onclick="menuclick('submenu<%#Container.ItemIndex %>','bar<%#Container.ItemIndex %>');">
<%#Eval("numename1") %>
</h1>
<ul id="submenu<%#Container.ItemIndex %>">
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<li><a href="">
<%#Eval("numename2") %>
</a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HiddenField txtClassID = (HiddenField)e.Item.FindControl("txtClassID");
Repeater rep = (Repeater)e.Item.FindControl("Repeater2");
/*绑定二级菜单的Repeater*/
}
不知道理解的对不对
{
if(!IsPostBack)
{
getLeaveMessage();
}
} void getLeaveMessage()
{
this.rpt.DataSource = new YiCheng9090.BusinessLogicLayer.LeaveMessageService().getLeaveMessage();
this.rpt.DataBind();
}
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptProduct = (Repeater)e.Item.FindControl("rpt2");
//找到分类Repeater关联的数据项
//DataRowView rowv = (DataRowView)e.Item.DataItem;
HiddenField hid = e.Item.FindControl("hid") as HiddenField;
string id = hid.Value;
rptProduct.DataSource = new YiCheng9090.BusinessLogicLayer.LeaveMessageService().getReply(Convert.ToInt32(id));
rptProduct.DataBind(); } }
html
在向模版里面添加
<asp:HiddenField ID="hid" runat="server" Value='<%#Eval("id")%>' />
然后嵌套一个Repeater 就可以了