您现在的位置是:首页 > 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
}
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz!NT初始化过程代码分析
Discuz!NT论坛程序具有强大的配置功能 :从论坛的标题到论坛各个地方的显示,论坛模板的使用等等。要弄明白DNT页面的显示过程,首先应知道ASP.NET页面事件的引发顺序。
jsp整合discuz的方法
最近在实验室做项目用到的一个东西,拿来介绍一下。需求:现有行业应用网站一个,使用JSP开发,假设网址为app.com;及Discuz论坛一个,使用PHP开发,假设网址为bbs.com。
Discuz!X3.2数据表参数说明查询表
Discuz! X3.2 数据pre_common_admincp_cmenu 后台 首页 | 常用操作管理数据表pre_common_admincp_group 后台 站长 | 团队职务数据表
Discuz插件冲突导致页面崩溃的排查方法
在面对Discuz插件冲突导致的页面崩溃时,我总会想起当初 头一次遇到类似问题的经历。当时,我花了好几个小时才找到问题的根源,简直像是在大海捞针。现在回想起来,那不仅是对技术的考验
相关源码
-
自适应黑色简繁双语轴承齿轮机械设备制造网站模板该模板为轴承齿轮机械制造企业提供一体化网站建设方案,着重解决行业特有的多语言展示、移动端适配和高效率内容管理需求,帮助企业精准展示产品特性与工艺流程查看源码 -
(PC+WAP)蓝色玻璃纤维制品环保设备营销型pbootcms模板源码下载这是一款针对玻璃纤维行业特点设计的网站模板,采用蓝色系配色方案,体现工业感和环保理念。模板包含产品中心、应用案例、技术支持和新闻动态等核心模块,能够全面展示玻璃纤维制品的技术参数和应用场景。查看源码 -
(自适应响应式)刷卡机POS机无线支付设备pbootcms网站源码下载本模板基于PbootCMS系统开发,为支付终端设备企业设计,特别适合POS机、移动支付终端、刷卡设备等金融科技产品展示。采用响应式布局技术,确保各类支付终端产品在不同设备查看源码 -
帝国cms7.5游戏门户H5小游戏网站模板源码免费下载基于帝国CMS7.5开发的H5游戏门户模板,为在线游戏平台设计。支持PC端与移动端同步生成,打造完整的游戏娱乐体验平台。查看源码 -
(自适应)互联网建站网络公司个人工作室网站模板基于PbootCMS内核开发,围绕「技术方案展示」「成功案例库」「服务流程说明」三大模块构建,支持PC与移动端数据实时同步。附带包含客户评价、行业解决方案的完整测试数据包查看源码 -
响应式HTML5家居建材办公家具桌椅pbootcms模板为家居建材、办公家具企业打造的响应式网站模板,同时支持多行业快速适配通过替换文字图片即可转型为其他行业官网,大幅降低开发成本。查看源码
| 分享笔记 (共有 篇笔记) |