带有自定义TreeNode的ASP.NET自定义树视图

时间:2009-12-30 22:29:34

标签: c# asp.net treeview treenode

我对ASP.NET 3.5 Treeview和Treenodes有疑问。我想构建一个支持多状态复选框的Treeivew。我实际上想要4个状态 - 检查,未检查,不确定(如三状态框 - 父级是三态,如果不是所有子项都被检查)和NotAppicable(此复选框将是X并且显示为灰色)。我已经阅读了如何通过使用Web用户控件(.ascx)添加自定义用户控件,但它似乎不能以覆盖TreeNode和TreeView的方式工作。我在.xml文件中显示静态数据,我非常喜欢将treeview绑定到数据源的功能。所以,如果可以的话,我宁愿继续使用树。

所以我想我有几个问题:

  1. 如何覆盖treeview或treenode,并将其添加到webform? (所以我仍然可以使用设计器?)我是否必须将它们构建为.dll并以此方式加载?或者我可以将.cs文件添加到我的项目中吗?

  2. 有没有人对如何更改treeNode以处理检查状态有任何想法?

  3. 有关如何将自定义图像用于不同检查状态的任何想法吗?

  4. 谢谢!

1 个答案:

答案 0 :(得分:1)

我对第一个问题有一个答案 - 如何覆盖treeview或treenode,并将其添加到webform? (所以我仍然可以使用设计器?)我是否必须将它们构建为.dll并以此方式加载?或者我可以将.cs文件添加到我的项目中吗?

每个人都可能知道如何做到这一点,但这对我来说是新闻。将扩展类添加到命名空间中的App_Code文件夹:

namespace MyWebsiteControls
{
   ...
}

然后,在下面的web.config文件中包含对该命名空间的引用:

<pages/>
    <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add namespace="MyWebsiteControls" tagPrefix="MyWebsiteControls"/>
    </controls>
</pages>"

然后在.aspx文件中调用您的控件:

<MyWebsiteControls:XTreeView ID="TreeView1" runat="server" DataSourceID="Checklist"
    ShowCheckBoxes="All" CssClass="treeViewStyle">
</MyWebsiteControls:XTreeView>