您现在的位置是:首页 > 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论坛中回复帖子并参与讨论的方法
1. 点击帖子下方的“回复”按钮,2. 输入你的内容,3. 点击“提交”即可。你还可以使用bbcode或html插入多媒体内容,引用其他用户的回复,确保遵守论坛规则并优化你的回复以提升用户体验。
Discuz去掉php后缀的方法
安装好discuz程序后,登入管理员账户,在右上角找到管理中心,再输入密码,提交。打开以后找到全局(最上面首页的旁边,也就是第二个),点击打开。
Windows7&IIS7.5在内网部署Discuz
部署环境就一台普通的PC,四核i3,Windows7。这就开搞了。系统是Windows 7 专业版,自带IIS7.5(家庭版不带)。IIS7开始带了FastCgi,对PHP支持好了许多,所以也不必装Apache啦。
discuz的hook使用方法
公共hook global_footer模板显示形式:插件类中相对应的方法模块动作 hook模板显示形式:插件类中相对应的方法
相关源码
-
(自适应响应式)html5高档服装定制西服pbootcms模板下载本模板基于PbootCMS内核开发,为服装定制企业和服装品牌量身打造。设计风格时尚现代,充分展现服装行业的审美特质与品牌魅力。采用HTML5响应式技术,确保在各种设备上呈现视觉效果。整站布局注重产品展示与品牌叙事,帮助企业有效展示服装系列与定制服务,提升客户体验。查看源码 -
(自适应)帝国cms7.5文章新闻博客整站源码( 带会员中心)本模板基于帝国CMS内核开发,为新闻资讯、个人博客及作品展示类网站设计。采用响应式布局技术,确保在手机、平板和电脑等不同设备上都能获得良好的浏览体验。查看源码 -
(自适应)绿色园林建筑花卉园艺艺术模板免费下载为景观设计及园艺企业打造的响应式网站框架,基于PbootCMS系统开发,帮助传统园林行业建立现代化数字展示平台。采用标准DIV+CSS前端架构,代码精简无冗余。查看源码 -
(自适应)绿色农业机械设备农场网站源码下载为现代农业机械领域打造的响应式网站模板,采用PbootCMS内核开发,数据实时同步后台管理。通过简洁大气的视觉设计,有效展示农机产品技术参数与应用场景,帮助客户快速建立专业数字化形象。查看源码 -
(PC+WAP)茶叶茶艺茶道茶文化pbootcms模网站源码下载本模板基于PbootCMS系统开发,为茶叶企业、茶艺培训机构设计,特别适合展示茶产品、茶道文化等内容。采用响应式技术,确保在不同设备上都能呈现优雅的茶文化氛围。查看源码 -
(自适应)蓝色沙盘复古建筑模型制作网站模板源码下载为建筑沙盘模型企业设计的响应式网站模板,通过三维空间展示技术结合产品参数可视化,有效提升模型作品的线上呈现效果与客户咨询转化率。查看源码
| 分享笔记 (共有 篇笔记) |
