在数据库中显示树视图中的项目 [英] Displaying items in a treeview from the database

查看:48
本文介绍了在数据库中显示树视图中的项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有人,



我通过以下代码生成TreeView:



Dear All,

I am generating the TreeView by the following code:

<ul id="navigation" class="treeview">

            <asp:Repeater runat="server" ID="repeatGroups">
                <ItemTemplate>
                    <li><a href='Default.aspx?name=<%# Eval("GroupName") %>'><%# Eval("GroupName")%></a>

                        <asp:Repeater runat="server" ID="repeatCategory" DataSource='<%# Eval("Categories")%>' OnItemDataBound="repeatCategory_ItemDataBound">
                            <HeaderTemplate><ul></HeaderTemplate>
                            <ItemTemplate>
                                <li><a href='Default.aspx?name=<%# Eval("Name") %>'><%# Eval("Name") %></a>

                                    <asp:Repeater runat="server" ID="repeatItem" DataSource='<%# Eval("Items")%>'>
                                        <HeaderTemplate><ul></HeaderTemplate>
                                        <ItemTemplate>
                                            <li><a href='Default.aspx?name=<%# Eval("Name") %>'><%# Eval("Name")%></a></li>
                                        </ItemTemplate>
                                        <FooterTemplate></ul></FooterTemplate>
                                    </asp:Repeater>

                                </li>
                            </ItemTemplate>
                            <FooterTemplate></ul></FooterTemplate>
                        </asp:Repeater>

                    </li>
                </ItemTemplate>
            </asp:Repeater>

        </ul>





.cs代码:



.cs code:

protected void repeatCategory_ItemDataBound(object sender, RepeaterItemEventArgs e)
       {
           if (e.Item.DataItem != null)
           {
               //bind any products
               Repeater repeatItem = (Repeater)e.Item.FindControl("repeatItem");
               if (repeatItem != null)
                   repeatItem.Visible = (repeatItem.Items.Count > 0) ? true : false;

           }
       }







使用上面的代码,我可以通过使用ArrayList将项目硬编码到Treeview中来显示Treeview。但是,我想从数据库(SQL Server)访问项目并显示相同的内容。



可以任何人建议我应该如何在表中的结构我的数据库?



谢谢&问候




With the above code, I can display a Treeview by hardcoding the items into the Treeview using ArrayList. But, I want to access the items from the database(SQL Server) and display the same.

Can Any one suggest me how should be the structure of the table in my database?

Thanks & Regards

推荐答案

分层应用程序设计的一个要点是UI不应该关心后端数据的存储方式,中间层可以用来转换数据需要任何格式。



您的数据库应该设计成逻辑实体分组在规范化表中,而不是如何显示给最终用户。



找到适合数据的数据库设计,然后对其进行转换,以便将其呈现给业务逻辑层中的用户。



我的经验数据模型的变化频率低于UI,因为在前端添加更多功能时,它们通常不需要更改表结构 - 它会以不同的方式切割数据。
One of the points of tiered application design is that the UI shouldn't care how the backend data is stored, your middle tier is reponsible for transforming the data into whatever format is required.

Your database should be designed so that logical entities are grouped in normalised tables not how it should be displayed to an end user.

Find a database design that fits the data and then transform it so that it can be presented to a user in your business logic tier.

Im my experience data models change less often than UI's as when more features are added at the front end they often don't require changes to the table structures - it is jsut cutting the data differently.


嗨raj,



创建Treeview [ ^ ]


嗨试试这个,



Hi try with this,

  TreeNode pnode, cnode, dnode;
TreeNode pnode, cnode, dnode;
    view.Nodes.Clear();



   DataSet ds =sh.GetDataSet("SELECT   distinct  Table1.value1,Table1.value2 FROM         table2 INNER JOIN    Table1 ON table2.Section = Table1.value1");


   foreach(DataRow dr in ds.Tables[0].Rows)
   {

       pnode = new TreeNode();
       pnode.Text = dr["value2"].ToString();
       pnode.Value = dr["value1"].ToString();
       view.Nodes.Add(pnode);

       view.CollapseAll();


       DataSet ds1 = sh.GetDataSet("SELECT    distinct table2.SubSection FROM table2 INNER JOIN    Table1 ON table2.Section = Table1.value1  where Table1.value2 like '" + dr["value2"].ToString() + "'  ");
           foreach (DataRow dr1 in ds1.Tables[0].Rows)
           {

               cnode = new TreeNode();
               cnode.Text = dr1["SubSection"].ToString();
                 pnode.ChildNodes.Add(cnode);


               DataSet ds2 = sh.GetDataSet("SELECT    distinct  table2.value4,table2.value3  FROM         table2 INNER JOIN    Table1 ON table2.Section = Table1.value1  where Table1.value2 like '" + dr["value2"].ToString() + "' and table2.SubSection like '" + dr1["SubSection"].ToString() + "' ");
               foreach (DataRow dr2 in ds2.Tables[0].Rows)
               {


                   dnode = new TreeNode();
                   dnode.Text = dr2["value3"].ToString();
                   dnode.Value = dr2["value4"].ToString();
                   cnode.ChildNodes.Add(dnode);

               }
           }





问候,

Pal



regards,
Pal


这篇关于在数据库中显示树视图中的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆