DataList数据控件嵌套显示主从关系数据

作者: unvs 分类: ASP.NET 发布时间: 2011-10-26 13:01 ė14,848 views 6没有评论

下面发表一篇有关DataList数据控件嵌套方法的文章,是一位博友(网名:海角)比较详细地整理并分享给我,然后发表到我的博客上,其中原文大部分未改动,仅做了小许修改及注释。
DataList数据控件数据为列表形式显示,而并不能好的以层级、主次关系呈现出来,故我们可以想到利用数据控件嵌套,来实现这种效果,下面是一个从表结构到页面的完整实例:

实例名称:会员及该会员拥有产品的数据列表显示

1、数据表设计
在指定数据库下建立两张表,这里在Company数据下建立用户表(UserInfo为主表),产品表(ProductInfo为从表)。
UserInfo表:

字段 数据类型 说明
UserID Int 会员编号,主键,自动增加
UserName nvarchar(32) 会员名

ProductInfo表:

字段 数据类型 说明
ProductID nvarchar(32) 产品ID,主键,自动增加
UserID Int 会员编号
ProductName nvarchar(128) 产品名称

2、页面源代码

Default.aspx文件关键位置代码:

<!–大类–>

<!–DataList中的OnItemDataBound是该实例的关键–>

<asp:DataList ID="DataListZhu" runat="server" DataKeyField="UserID" OnItemDataBound="DataListZhu_ItemDataBound">

    <ItemTemplate>

       <%#DataBinder.Eval(Container.DataItem, "UserName")%><hr />

       <!–小类–>

       <asp:DataList ID="DataListCong" runat="server">

           <ItemTemplate>

               <%# DataBinder.Eval(Container.DataItem, "ProductName")%>

           </ n style="color:maroon">ItemTemplate>

        </asp:DataList><br /><br />

    </ItemTemplate>

</asp:DataList> 

Default.aspx.cs文件关键位置代码: 

//构建数据库连接,SQL语句,创建参数,这里是使用的本地数据,数据库连接用户名为sa,密码为空

    string strConnect = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Company;Server=(local);"; //连接数据库

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            //加载页面显示主DataList数据

            SqlConnection objConnection = new SqlConnection(strConnect);

            string strCmd = "select dbo.UserInfo.UserID, dbo.UserInfo.UserName from dbo.UserInfo "; //提取用户数据信息

            SqlCommand objCommand = new SqlCommand(strCmd,objConnection);

            SqlDataAdapter objDataAdapter = new SqlDataAdapter(objCommand);

            DataSet objDataSet = new DataSet();

            objDataAdapter.Fill(objDataSet,"UserInfo");

            DataListZhu.DataSource = objDataSet; //将数据绑定至DataListZhu数据控件

            DataListZhu.DataBind();

        }

    }

    //下方为主从数据绑定关键,根据DataListZhu数据控件中UserID进行产品列表的绑定

    protected void DataListZhu_ItemDataBound(object sender, DataListItemEventArgs e)

    {

        string UserID = this.DataListZhu.DataKeys[e.Item.ItemIndex].ToString();

        SqlConnection objConnection = new SqlConnection(strConnect);

        SqlCommand objCommandC = new SqlCommand(string.Format("SELECT left([ProductName],20) as [ProductName], [ProductID] FROM [ProductInfo] WHERE [UserID]=’{0}’ ", UserID), objConnection); //提取产品数据信息

        SqlDataAdapter objDataAdapterC = new SqlDataAdapter(objCommandC);

        DataSet objDataSetC = new DataSet();

        objDataAdapterC.Fill(objDataSetC, "ProductInfo");

        DataList DataListCong = (DataList)e.Item.FindControl("DataListCong");

        DataListCong.DataSource = objDataSetC; //将数据绑定至DataListCong数据控件

        DataListCong.DataBind();

    }

 

 3、效果如下
张三
________________________________________
产品名称1
产品名称2

李四
________________________________________
产品名称1
产品名称2

点评总结:上面是一个很简单的嵌套实例,实例很完整,一目了然,主要通过OnItemDataBound事件对子数据控件进行数据绑定,此种方法亦可在repeater与detailsview控件实现嵌套绑定。另外还有一种方法,是通过数据集的relations属性进行两数据控件关联绑定,想了解的童鞋,请 点击查看   ,最后再次感谢博友海角提供文章分享。

本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:DataList数据控件嵌套显示主从关系数据

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部