2011-08-31 47 views
0

我在ASP.NET中是全新的,所以我认为这是一个简单的问题。在我的应用程序尝试使用jQuery树状,在默认页面我有以下代码:如何从SQL查询填充jQuery树视图的无序列表?

<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

编辑: 这是一种将强类型对象传递给视图的方法。

创建一个方法来加载你的清单,并把它添加到您的会话,所以你可以调用每一个回发这种方法,以确保您的名单还是在会议,像这样:

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事件或您要确保您的名单还是在会议,像这样的任何其他方法:

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

您通过查看一个强类型的对象,如列表之类的您使用存储项目s并且遍历它来动态创建<ul>

例如,考虑链表类是强类型列表:

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

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

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

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

+0

非常感谢您的回答!我会尽量按照你的建议! –

+0

您使用的是哪个版本的ASP.NET?它是一个webforms应用程序? – Hallaghan

+0

是的,这是一个webform,ASP.Net版本4.0。一个愚蠢的问题 - 在将数据列表填充到服务器端后,我如何将数据列表传递给View? –