// 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);
}
}
}
}
}