Repeater控件嵌套--多级目录

来源:互联网 发布:软件售前工程师 编辑:程序博客网 时间:2024/04/30 14:22

Repeater控件多个嵌套的数据绑定之简单实现

一般项目总很多地方会有分类这样一个功能..

一级分类,二级分类,三级分类这样的..

要显示这样的一个分类,常用的方法是使用treeview控件.

但也有不少人是使用Repeater控件多个嵌套来模拟tree的..

怎么样实现呢,方法不少..现在来一个比较简单的.

上图:

 

这是一个简单的二级分类..

aspx代码是这样的:

 

Code
<asp:Repeater ID="Repeater1" runat="server">
        
<ItemTemplate>
        
<table>
        
<tr><td width="150"><h3>
            
<%#DataBinder.Eval(Container.DataItem,"kemu_category_name"%>//这里是绑定的一级分类名称
            
</h3></td></tr>
        
<tr><td>
            
<asp:Repeater ID="Repeater2" runat="server" DataSource='<%#GetDataSourceById(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"kemu_category_id"))) %>'>//这里的GetDataSourceById是一个带参数的方法,写在CS文件里.将一级分类的ID(kemu_category_id)传进来.

            
<ItemTemplate>
            
<table><tr><td>
            
<%#DataBinder.Eval(Container.DataItem,"kemu_name"%>//这里绑定的则是二级分类的名称了.
            
</td></tr></table>
            
</ItemTemplate>
            
</asp:Repeater>
        
</td></tr>
        
</table>
        
</ItemTemplate>
        
</asp:Repeater>

 

接下来看看CS文件的代码:

 

Code
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BLL;

public partial class web_account_kemumingxi : System.Web.UI.Page
{
    ManageKemu MKemu 
= new ManageKemu();
    DataSet ds 
= new DataSet();
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
                DataBindToRP1();
        }
    }

    
//绑定一级分类的方法.
    public void DataBindToRP1()
    {
        ds.Clear();
        ds 
= MKemu.ShowKemuCategory();//这里大家自己写数据读取的方法
        Repeater1.DataSource = ds;
        Repeater1.DataBind();
    }

    
//这里就是aspx文件里调用的那个方法了.返回一个DataSet
    public DataSet GetDataSourceById(int id)
    {
        MKemu.Kemu_category_id 
= id;
        ds 
= MKemu.ShowDetailKemu();
        
return ds;
    }
}

 

 

就这样就行了...代码不多吧..主要是比较简单,所以推荐使用..上面代码里的命名是随便写的,为了方便看.请看官不要追究命名规范问题...谢谢.

原创粉丝点击