Asp.net 用datalist嵌套的方法实现二级菜单的分类导航
来源:互联网 发布:linux # $ 编辑:程序博客网 时间:2024/05/22 12:18
刚开始学习Asp.net做网站的时候, 做的是一个电子图书购买网站,发现图书有多级类目。 例如:小说分类下面世界名著,中国古典小说....... 文学类目下有 文学理论 中国古典诗歌。 这些要是直接写死在网站里面的话,不利于后面去添加和修改分类,这样做的话是非常不利于后期网站维护的。那么有什么办法把两级分类数据都通过去后台输入,前台去读取呢?也就是这些分类存在数据库中,实现动态读取。
找了些资料,然后我整合下,终于可以应用到自己的网站了。 用的是Listview或者datalist嵌套。我这里就用我的图书网站为例。 用datalist实现二级嵌套。
实现原理 是在pageload 事件下加载一级分类, 然后在一级分类datalist1的onitemdatabound事件下去读取一级分类的id , 然后根据一级分类的id 去检索二级分类的id (外键),当二级分类的id(等于)一级分类的id时候,把数据库中的数据绑定到二级分类的datalist2上。
先看看效果图
一.数据库设计
1. 数控库设计
TypeOne (一级分类数据库表)
ID int 主键
BookTypeOne char 一级分类名
TyperTwo (二级分类数据库表)
ID int 主键
BookType char 二级分类名
IDno int 一级分类名(外键)
Bookinfo图书信息表
Bookid int 主键
BookType char 外键
二 前台ASPX代码
首先在前台aspx页面嵌套两个datalist
代码:
<asp:DataList ID="DataList1" runat="server"
onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Visible="false"
Text='<%# Eval("ID") %>' />
<asp:Label ID="BookTypeOneLabel" runat="server"
Text='<%# Eval("BookTypeOne") %>' />
<asp:DataList ID="DataList2" runat="server" >
<ItemTemplate>
<asp:Label ID="BookTypeOneLabe2" runat="server"
Text='<%# Eval("BookType") %>' />
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
三.后台代码:在页面加载的时候他要先加载一级分类
protected void Page_Load(object sender, EventArgs e)
{
try
{
SqlDataReader read;
string sql = " SELECT *from TypeOne";
DB db = new DB();
SqlConnection cnn = db.ConnectionCnnString1;
read = db.SelectTable(sql);
DataList1.DataSource = read;
DataList1.DataBind();
}
catch (Exception ex)
{
Response.Write("查询失败" + ex.Message);
}
finally
{
}
//这是datalist1的DataList1_ItemDataBound 事件的代码
//千万不要写在page—load里面直接绑定哦。
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
SqlDataReader read;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataList myDataList1 = (DataList)e.Item.FindControl("DataList2");
//提取一级分类ID
string id= ((Label)e.Item.FindControl("Label1")).Text;
//一级分类的id与二级分类idno(外键)匹配
string sql = "SELECT BookType from TyperTwo where TyperTwo.IDno=" + id;
//把sql语句传到DB类查询
DB db = new DB();
SqlConnection cnn = db.ConnectionCnnString1;
read = db.SelectTable(sql);
myDataList1.DataSource = read;
myDataList1.DataBind();
}
}
四.数据库DB.cs类代码
//声明连接属性
public SqlConnection ConnectionCnnString1
{
get
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
cnn = new SqlConnection(constr);
cnn.Open();
return cnn;
}
}
//查询方法,这个方法只需要接收传过来sql语句
public SqlDataReader SelectTable(string sql)
{
if (cnn.State == ConnectionState.Closed)
{
cnn.Open();
}
cmd = new SqlCommand(sql, cnn);
read = cmd.ExecuteReader();
return read;
}
在这里起到抛砖引玉的作用,希望大神能够不耻下问,完善。
- Asp.net 用datalist嵌套的方法实现二级菜单的分类导航
- Asp.net DataList嵌套DataList的实现
- DataList嵌套DataList的实现
- DataList嵌套DataList的实现
- DedeCMS二级导航菜单的实现
- HTML如何实现 导航的二级菜单
- 简单三部实现导航分类二级菜单
- asp.net二级菜单导航实例1
- asp.net二级菜单导航 实例
- asp.net中Datalist使用数字分页的实现方法
- ASP.NET DataList嵌套实现评论效果
- bootstrap导航条的二级菜单下实现三级菜单
- .NET中DataList嵌套DataList的实例
- ASP.net中动态导航菜单的实现
- 简单的二级菜单导航
- ASP.NET-----------DataList 的小方法
- dede二级导航的简单实现方法
- 手机端带二级菜单滑动导航的实现
- LDA(线性判别分析或称Fisher线性判别),PCA(主成份分析)代码及表情识别中的应用
- Kinect开发学习笔记之(八)彩色、深度、骨骼和用户抠图结合
- 2014.3树形动规练习2
- android pengingintent
- 生命之反思
- Asp.net 用datalist嵌套的方法实现二级菜单的分类导航
- 编译和运行Codec Engine examples介绍
- P2020 clock 设置
- linux GLIBCXX_3.4.9 not found 解决
- openSUSE13.10 U盘制作第一视角
- java日历的使用(Calendar)
- C++ primer 类 成员变量 成员函数 友元
- Technical recruiting is broken: Here are 4 ways to hire better
- Python计算——二维数组的实现