// Author: Fabrice Marguerie // http://weblogs.asp.net/fmarguerie // fabrice @ madgeek .com // // Free for use namespace Madgeek.Web.UI.WebControls { #region Imports using System; using System.ComponentModel; using System.Web; using System.Web.UI; using Microsoft.Web.UI.WebControls; #endregion public class TreeNode : Microsoft.Web.UI.WebControls.TreeNode { /// /// Render the downlevel version of the TreeNode. /// /// The HtmlTextWriter that will receive the markup. protected override void RenderDownLevelPath(HtmlTextWriter output) { AddAttributesToRender(output); base.RenderDownLevelPath(output); } } /// /// Possible usages for web controls' client behavior. /// public enum BehaviorUsage {Default, Deactivated, Forced} /// /// TreeView Web Control that can be configured to use the client behavior or not. /// /// Being able to deactivate the client behavior can be useful to get correct printing. public class TreeView : Microsoft.Web.UI.WebControls.TreeView { /// /// Indicates whether the client behavior must forced or deactivated. /// [Category("Custom"), DefaultValue(BehaviorUsage.Default)] public BehaviorUsage BehaviorUsage { get { object o = ViewState["BehaviorUsage"]; return (o == null) ? BehaviorUsage.Default : (BehaviorUsage) o; } set { ViewState["BehaviorUsage"] = value; } } /// /// The ID of the rendering path being used. /// protected override RenderPathID RenderPath { get { /* base code if (IsDesignMode) { return RenderPathID.DesignerPath; } if (_BrowserLevelChecker.IsUpLevelBrowser(Context)) { return RenderPathID.UpLevelPath; } return RenderPathID.DownLevelPath; */ if (IsDesignMode) { return RenderPathID.DesignerPath; } switch (BehaviorUsage) { case BehaviorUsage.Deactivated: return RenderPathID.DownLevelPath; case BehaviorUsage.Forced: return RenderPathID.UpLevelPath; case BehaviorUsage.Default: return base.RenderPath; default: throw new Exception("BehaviorUsage not defined :"+BehaviorUsage); } } } } }