数据表结构:表1:
hid Name
---------
1 新闻
2 动态表2:
cid hid Name
----------------
1 1 国内新闻
2 1 国际新闻
3 1 本地新闻
4 2 最新动态
5 2 公告如何利用Repeater显示出:<ul>
<li>新闻
<ul>
<li>国内新闻</li>
<li>国际新闻</li>
<li>本地新闻</li>
</ul>
</li> <li>动态
<ul>
<li>最新动态</li>
<li>公告</li>
</ul>
</li></ul>
请大家讲详细点~~~谢谢~~~
hid Name
---------
1 新闻
2 动态表2:
cid hid Name
----------------
1 1 国内新闻
2 1 国际新闻
3 1 本地新闻
4 2 最新动态
5 2 公告如何利用Repeater显示出:<ul>
<li>新闻
<ul>
<li>国内新闻</li>
<li>国际新闻</li>
<li>本地新闻</li>
</ul>
</li> <li>动态
<ul>
<li>最新动态</li>
<li>公告</li>
</ul>
</li></ul>
请大家讲详细点~~~谢谢~~~
解决方案 »
- 【求助】C#实现服务器转发功能
- 关于实体类对表结果的映射?
- datagrid如何找到某控件的行号?
- 实在郁闷之极!求高手说下这到底是为什么?!难道是ASP.NET不稳定?
- 急聘高级.net开发工程师(北京)
- asp.net编写网页,输入信息到textbox,想按输入textbox框的格式输出,如何实现?
- 关于VaryByParam的问题
- 如果取消提交?
- Coolite Ext 中的TreePanel动态绑定问题【来者有分哦】
- 为何我用ASP.NET开发的Web应用程序,当网线拔掉后不能访问?
- ASP.NET连接MYSQL数据库
- |zyciis| 做了一个新网站,才上线.大家来打渣,找到一个安全漏洞给200分,谢谢
<ul>
<li>新闻
<ul>
<li>国内新闻 </li>
<li>国际新闻 </li>
<li>本地新闻 </li>
<li>最新动态 </li>
<li>公告 </li>
</ul>
</li> <li>动态
<ul>
<li>国内新闻 </li>
<li>国际新闻 </li>
<li>本地新闻 </li>
<li>最新动态 </li>
<li>公告 </li>
</ul>
</li> </ul>
这样的啦!!!!!
第一个Repeater对应的select语句是:
select 表2.Name from 表1 join 表2 on 表1.hid=表2.hid where 表1.hid=1第二个Repeater对应的select语句是:
select 表2.Name from 表1 join 表2 on 表1.hid=表2.hid where 表1.hid=2
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<div style="display: none">
<%# Eval("hid")%>
</div>
<%# Eval("name")%>
<asp:Repeater ID="repeaterSub" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<%# Eval("name")%>
</li>
</ItemTemplate>
<FooterTemplate>
</ul></FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ul></FooterTemplate>
</asp:Repeater>
后台: protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindMain();
}
} private void BindMain()
{
repeaterMain.DataSource = dt1();
repeaterMain.DataBind();
}
protected void repeaterMain_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string hid = ((DataRowView)e.Item.DataItem).Row["hid"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
if (repeaterSub != null)
{
DataTable dt = dt2();
DataView dv = new DataView(dt);
dv.RowFilter = "hid =" + hid;
repeaterSub.DataSource = dv;
repeaterSub.DataBind();
}
}
} DataTable dt1() //测试数据
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("hid", typeof(Int32)));
dt.Columns.Add(new DataColumn("name", typeof(String)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "新闻";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "动态";
dt.Rows.Add(dr)
return dt;
}
DataTable dt2() //测试数据
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("cid", typeof(Int32)));
dt.Columns.Add(new DataColumn("hid", typeof(Int32)));
dt.Columns.Add(new DataColumn("name", typeof(String)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = 1;
dr[2] = "国内新闻";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = 1;
dr[2] = "国际新闻";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = 1;
dr[2] = "本地新闻";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = 2;
dr[2] = "最新动态";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = 2;
dr[2] = "公告";
dt.Rows.Add(dr);
return dt;
}运行结果: <ul>
<li>
<div style="display: none">
1
</div>
新闻
<ul>
<li>
国内新闻
</li>
<li>
国际新闻
</li>
<li>
本地新闻
</li>
</ul>
</li>
<li>
<div style="display: none">
2
</div>
动态
<ul>
<li>
最新动态
</li>
<li>
公告
</li>
</ul>
</li>
</ul>
{
repeaterMain.DataSource = dt1();
repeaterMain.DataBind();
}---------------------------
这时select * from tb1 string hid = ((DataRowView)e.Item.DataItem).Row["hid"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
if (repeaterSub != null)
{
DataTable dt = dt2();
DataView dv = new DataView(dt);
dv.RowFilter = "hid =" + hid;
repeaterSub.DataSource = dv;
repeaterSub.DataBind();
}
---------------------------
这时select * from tb2 where hid = hid(这个为上面的 string hid =....)
参考