您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz下拉树形框控件代码示例
费汐家2025-07-07Discuz教程已有人查阅
导读昨天发现简单的改进的下拉树形框控件,和大家一起分享控件代码:使用方法:页面aspx代码:#region 初始化信息绑定
昨天发现简单的改进的下拉树形框控件,和大家一起分享
控件代码:
页面aspx代码:
控件代码:
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
}
本文标签:
很赞哦! ()
相关教程
图文教程
Windows快速搭建Discuz论坛的步骤方法
在.Net领域,比较优秀的论坛有Community Server,yetanotherforums,CVBBS等等。在php领域,优秀的论坛有phpwind,phpbb,Discuz,vBulletin等等
Discuz!NT论坛整合使用membership登陆信息的方法
公司最近开发的项目,有论坛,要求采用Discuz!NT,做用户整合,因dnt采用自己的用户管理,无法与membership用户整合,多次试验,通过修改ForumUtils.cs文件
PHPWIND和DISCUZ有哪些区别
大家都知道,phpwind和discuz是两款用来做论坛的强大的php开源程序。客观的说,现在phpwind和discuz各有所长,要说他们哪个比较好,也是很难的事情
Discuz会员等级体系合理设置的方法
在探索Discuz会员等级体系的合理设置之前,让我们先思考一个问题:为什么需要设置会员等级体系?会员等级体系不仅仅是给用户一个荣誉称号,更是激励用户活跃、提升用户体验、增加平台粘性的重要工具。
相关源码
-
(自适应)摄像头安防电子设备pbootcms源码下载本模板基于PbootCMS系统开发,为安防电子设备企业设计,特别适合监控摄像头、安防系统等产品的展示。采用响应式技术,确保各类设备参数和功能在不同终端上都能清晰呈现。查看源码 -
pbootcms模板PC+WAP娱乐新闻资讯类博客网站源码该模板基于PbootCMS内核开发,专为娱乐新闻、健康生活类资讯网站设计,同时支持快速适配其他行业(如企业官网、博客门户等),仅需替换图文内容即可完成转型。查看源码 -
(PC+WAP)蓝色智能环保机械设备网站营销型pbootcms模板下载本模板基于PbootCMS系统开发,为环保设备制造企业设计,特别适合展示环保机械、智能装备等产品。采用响应式技术,确保各类设备参数和技术方案在不同终端上都能清晰展示。查看源码 -
(PC+WAP)茶叶茶艺茶道茶文化pbootcms模网站源码下载本模板基于PbootCMS系统开发,为茶叶企业、茶艺培训机构设计,特别适合展示茶产品、茶道文化等内容。采用响应式技术,确保在不同设备上都能呈现优雅的茶文化氛围。查看源码 -
(自适应响应式)高端家用办公家具家居桌椅pbootcms模板下载为办公家具企业设计的响应式网站模板,涵盖产品展示、案例呈现、企业介绍等核心模块。通过可视化后台可快速发布实木桌椅、系统家具、办公屏风等产品信息,帮助客户直观了解材质参数与空间搭配方案。查看源码 -
(自适应响应式)HTML5中小学早教教育机构类网站pbootcms模板下载基于PbootCMS内核开发的响应式模板,为早教中心、培训学校等教育机构打造,提供从技术架构到视觉呈现的全套网站建设方案。查看源码
| 分享笔记 (共有 篇笔记) |
