您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程

Discuz下拉树形框控件代码示例

费汐家2025-07-07Discuz教程已有人查阅

导读昨天发现简单的改进的下拉树形框控件,和大家一起分享控件代码:使用方法:页面aspx代码:#region 初始化信息绑定

昨天发现简单的改进的下拉树形框控件,和大家一起分享
控件代码:
1using System.Data;
2using System.Web.UI;
3using System.Web;
4using System.Web.UI.WebControls;
5using System.ComponentModel;
6
7using Discuz.Common;
8using Discuz.Data;
9
10namespace Discuz.Control
11{
12/// <summary>
13/// 下拉树形框控件。
14/// </summary>
15[DefaultProperty("Text"),ToolboxData("<{0}:DropDownTreeList runat=server></{0}:DropDownTreeList>")]
16public class DropDownTreeList : Discuz.Control.WebControl, IPostBackDataHandler, IPostBackEventHandler
17{
18/// <summary>
19/// 下拉列表框控件变量
20/// </summary>
21public System.Web.UI.WebControls.DropDownList TypeID=new System.Web.UI.WebControls.DropDownList();
22
23
24/// <summary>
25/// 构造函数
26/// </summary>
27public DropDownTreeList(): base()
28{
29this.BorderStyle = BorderStyle.Groove;
30this.BorderWidth=1;
31}
32
33/// <summary>
34/// 构造函数
35/// </summary>
36/// <param name="sqlstring">查询字符串</param>
37public DropDownTreeList(string sqlstring): this()
38{
39 BuildTree(sqlstring);
40}
41
42/// <summary>
43/// 构造函数
44/// </summary>
45/// <param name="sqlstring">查询字符串</param>
46/// <param name="selectid">选取项</param>
47public DropDownTreeList(string sqlstring,string selectid): this(sqlstring)
48{
49this.TypeID.SelectedValue=selectid;
50}
51
52/// <summary>
53/// 创建树
54/// </summary>
55public void BuildTree()
56{
57if((this.SqlText!=null)&&(this.SqlText!=""))
58{
59BuildTree(this.SqlText);
60}
61}
62
63/// <summary>
64/// 创建树
65/// </summary>
66/// <param name="sqlstring">查询字符串</param>
67public void BuildTree(string sqlstring)
68{
69
70string SelectedType="0";
71
72TypeID.SelectedValue=SelectedType;
73
74this.Controls.Add(TypeID);
75
76DataTable dt = DbHelper.ExecuteDataset(CommandType.Text, sqlstring).Tables[0];
77
78TypeID.Items.Clear();
79//加载树
80TypeID.Items.Add(new ListItem("请选择 ","0"));
81DataRow [] drs = dt.Select(this.ParentID+"=0");
82
83foreach( DataRow r in drs )
84{
85TypeID.Items.Add(new ListItem(r[1].ToString(),r[0].ToString()));
86string blank = HttpUtility.HtmlDecode("");
87BindNode( r[0].ToString() , dt,blank);
88}
89TypeID.DataBind();
90
91}
92
93/// <summary>
94/// 创建树
95/// </summary>
96/// <param name="sqlstring">查询字符串</param>
97/// <param name="selectid">选取项</param>
98public void BuildTree(string sqlstring,string selectid)
99{
100BuildTree(sqlstring);
101this.TypeID.SelectedValue=selectid;
102}
103
104/// <summary>
105/// 创建树结点
106/// </summary>
107/// <param name="sonparentid">当前数据项</param>
108/// <param name="dt">数据表</param>
109/// <param name="blank">空白符</param>
110private void BindNode(string sonparentid ,DataTable dt,string blank)
111{
112DataRow [] drs = dt.Select(this.ParentID+"=" + sonparentid );
113
114foreach( DataRow r in drs )
115{
116string nodevalue = r[0].ToString();
117string text = r[1].ToString();
118text = blank + text;
119TypeID.Items.Add(new ListItem(text,nodevalue));
120string blankNode = HttpUtility.HtmlDecode("" + blank);
121BindNode(nodevalue,dt,blankNode);
122}
123}
124
125
126/// <summary>
127/// 选取项
128/// </summary>
129[Bindable(true),Browsable(true),Category("Appearance"),DefaultValue("")]
130public string SelectedValue
131{
132get
133{
134return this.TypeID.SelectedValue;
135}
136
137set
138{
139this.TypeID.SelectedValue = value;
140}
141}
142
143/// <summary>
144/// 父字段名称
145/// </summary>
146private string m_parentid="parentid";
147[Bindable(true),Category("Appearance"),DefaultValue("parentid")]
148public string ParentID
149{
150get
151{
152return m_parentid;
153}
154
155set
156{
157m_parentid = value;
158}
159}
160
161
162SQL字符串
188
189
190/// <summary>
191/// 当某选项被选中后,获取焦点的控件ID(如提交按钮等)
192/// </summary>
193[Bindable(true),Category("Appearance"),DefaultValue("")]
194public string SetFocusButtonID
195{
196get
197{
198object o = ViewState[this.ClientID+"_SetFocusButtonID"];
199return (o==null)?"":o.ToString();
200}
201set
202{
203ViewState[this.ClientID+"_SetFocusButtonID"] = value;
204if(value!="")
205{
206this.TypeID.Attributes.Add("onChange","document.getElementById('"+value+"').focus();");
207}
208}
209}
210
211/// <summary>
212/// 输出html,在浏览器中显示控件
213/// </summary>
214/// <param name="output"> 要写出到的 HTML 编写器 </param>
215protected override void Render(HtmlTextWriter output)
216{
217if (this.HintInfo != "")
218{
219output.WriteBeginTag("span id=\"" + this.ClientID + "\"onmouseover=\"showhintinfo(this," + this.HintLeftOffSet + "," + this.HintTopOffSet + ",'" + this.HintTitle + "','" + this.HintInfo + "','" + this.HintHeight + "','" + this.HintShowType + "');\" onmouseout=\"hidehintinfo();\">");
220}
221
222RenderChildren(output);
223
224if (this.HintInfo != "")
225{
226output.WriteEndTag("span");
227}
228}
229
230
231
232IPostBackDataHandler 成员
273
274}
275}
使用方法:
页面aspx代码:
<%@ Register TagPrefix="cc2" Namespace="Discuz.Control" Assembly="Discuz.Control" %>
<div id="showtargetforum" runat="server">
<cc2:DropDownTreeList id="targetforumid" runat="server" Visible="true"></cc2:DropDownTreeList>
</div>
*.apsx.cs代码:
public void InitInfo()
{
#region 初始化信息绑定
targetforumid.BuildTree(DatabaseProvider.GetInstance().GetForumsTree());
//绑定SQL语句
if (DNTRequest.GetString("fid") != "")
{
targetforumid.SelectedValue = DNTRequest.GetString("fid");
//addtype.SelectedValue = "1";
targetforumid.Visible = true;
}
#endregion
}

本文标签:

很赞哦! ()

相关源码

  • 帝国cms7.5大型游戏资讯门户网站源码免费下载本模板基于帝国CMS7.5内核开发,为大型游戏资讯门户网站设计。模板自带响应式手机版,适配多种终端设备。内容架构针对游戏行业特点优化,支持游戏资讯、评测、攻略等内容类型的发布与管理。查看源码
  • (自适应)帝国cms7.5模板自媒体文章新闻博客为帝国CMS7.5设计的响应式模板,采用H5技术构建现代化内容展示框架。通过智能断点检测技术实现手机、平板、PC三端适配查看源码
  • (带手机版)绿色生态农业种植农产品网站pbootcms源码下载本模板基于PbootCMS内核开发,为生态农业企业量身打造,适用于农业种植、有机农场、农产品电商等业务场景。模板设计充分体现绿色环保理念,突出农业特色,同时保持简洁大气的视觉效果,帮助农业企业建立专业形象。查看源码
  • (自适应响应式)英文外贸汽车零配件五金机械网站模板为汽车零部件制造商与五金机械出口企业打造的响应式网站模板,内置多语言切换功能,支持产品参数表、OEM能力展示等外贸场景需求。通过结构化数据展示帮助海外买家快速理解产品规格。查看源码
  • 响应式HTML5家居建材办公家具桌椅pbootcms模板为家居建材、办公家具企业打造的响应式网站模板,同时支持多行业快速适配通过替换文字图片即可转型为其他行业官网,大幅降低开发成本。查看源码
  • 工商注册财务代理记账类自适应pbootcms网站工商注册、财务代理记账企业打造的数字化门户模板,基于PbootCMS内核深度开发。采用前沿响应式架构,无缝适配手机端触控交互与PC端展示需求查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐