如何从SQL查询填充jQuery树视图的无序列表?

时间:2011-08-31 13:36:32

标签: javascript jquery asp.net jquery-plugins treeview

我是ASP.NET的新手,所以我认为这是一个简单的问题。在我的应用程序中,我尝试使用jQuery treeview,在Default页面中我有以下代码:

<script src="jquery-1.6.2.js" type="text/javascript"></script>
    <script src="jquery.treeview.js" type="text/javascript"></script>

            <script type="text/javascript">
                    $(document).ready(function () {
                            $("#example").treeview({
                                    persist: "location",
                                    collapsed: true,
                                    animated: "medium"
                            });

                    });
            </script>

我需要填充树,所以我使用以下示例:

<ul id="example" runat="server" class="filetree">
         <li><span class="folder">Folder 1</span>
                 <ul>
                       <li><span class="file">Item 1.1</span></li>
                 </ul>
         </li>
         <li><span class="folder">Folder 2</span>
                  <ul>
                        <li><span class="folder">Subfolder 2.1</span>
                               <ul>
                                  <li><span class="file">File 2.1.1</span></li>
                                  <li><span class="file">File 2.1.2</span></li>
                               </ul>
                        </li>
                        <li><span class="file">File 2.2</span></li>
                 </ul>
         </li>
         <li class="closed"><span class="folder">Folder 3 (closed at start)</span>
                 <ul>
                        <li><span class="file">File 3.1</span></li>
                 </ul>
         </li>
         <li><span class="file">File 4</span></li>
</ul>

问题是我使用SQL查询从数据库中获取树视图的数据。

所以我的问题是如何用我的数据填充这个无序列表?非常感谢提前!

1 个答案:

答案 0 :(得分:1)

修改 这是一种将强类型对象传递给视图的方法。

创建一个方法来加载列表并将其添加到Session中,这样您就可以在每次回发时调用此方法,以确保列表保留在Session中,如下所示:

private void LoadMyListToSession()
{
          DataContext ctx = New DataContext(); // instantiate your datacontext if you haven't done so before
          List<Object> ObjectList = ctx.MyDataTable().ToList(); // load your list
          Page.Session.Add("MyVariableName", ObjectList); // add your list to the session
}

在page_load事件或您希望确保列表保留在Session中的任何其他方法上执行类似的代码,如下所示:

private void Page_Load(object sender, System.EventArgs e) {
    LoadMyListToSession();
}

将您的View传递给一个强类型对象,例如类的列表,用于存储数据库中的项目并迭代它以动态创建<ul>

例如,将ObjectList视为强类型列表:

<% List<Object> ObjectList = (List<Object>) Session["ObjectList"]; &>

<% if(ObjectList != null && ObjectList.Count > 0){ %>
   <ul>
   <% foreach(Object item in ObjectList)
   { %>
       <li><%= item.Name; %></li>
<% } %>
  </ul>
<% } %>

正如您在上面的示例中所看到的,如果ObjectList是您从数据库加载的项目列表,您可以遍历它并在每次迭代中创建一个<li>,其中包含您项目中的任何属性你想要的迭代。 请记住,您需要从Session加载对象,如上所示!

如果您还有疑问,请询问。