您现在的位置是:首页 > 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等等
ubuntu安装Discuz的步骤方法
1,安装数据库和Web服务器这个步骤请记住MySql的密码。另外可以安装MySQL到图形管理界面:2,安装Zend框架4,解压
discuz修改admin.php的方法
discuz修改admin.php的方法:1、打开根目录,修改“admin.php”文件名为“study.php”;2、修改“header.htm”文件内容。
Discuz!X 3.4任意文件删除漏洞复现过程
今天看下群里在讨论Discuz!X 3.4 任意文件删除漏洞,自己做了一些测试,记录一下过程。结尾附上自己编写的python脚本,自动化实现任意文件删除。
相关源码
-
帝国cms7.5大型游戏资讯门户网站源码免费下载本模板基于帝国CMS7.5内核开发,为大型游戏资讯门户网站设计。模板自带响应式手机版,适配多种终端设备。内容架构针对游戏行业特点优化,支持游戏资讯、评测、攻略等内容类型的发布与管理。查看源码 -
(自适应)帝国CMS7.5模板淘宝客导购博客文章源码本模板基于帝国CMS7.5内核深度开发,为电商导购类网站设计。采用响应式布局技术,确保在手机、平板及电脑端均能获得优质浏览体验。模板内置商品推荐模块与优惠信息展示区,可快速搭建专业导购平台。查看源码 -
(PC+WAP)蓝色低碳环保隔断板装修装饰类网站pbootcms源码下载本款基于PbootCMS开发的网站模板为活动隔断板、装修装饰行业打造,特别适合移动隔断、环保隔断、办公分区等产品的展示与推广。查看源码 -
(自适应响应式)房产合同知识产权企业管理pbootcms模板下载本模板基于PbootCMS系统开发,为知识产权服务、法律咨询及企业合同管理等行业设计。采用严谨专业的布局风格,突出法律文书与知识产权服务行业特色,适合展示各类法律服务和知识产权相关内容。查看源码 -
(PC+WAP)高端餐饮美食小吃加盟网站模板下载pbootcms本模板基于PbootCMS内核开发,为餐饮美食品牌加盟、小吃连锁企业量身打造。通过精致的美食视觉呈现与加盟业务流程展示,帮助餐饮企业建立专业线上门户,实现品牌形象与加盟业务的双重展示。查看源码 -
(PC+WAP)中英双语户外用品帐篷装备pbootcms网站模板下载这款基于PbootCMS开发的中英文双语模板专为户外装备行业设计,适配PC和移动设备。模板采用现代化设计风格,突出户外产品的功能性和实用性,帮助企业建立专业的国际化展示平台。查看源码
| 分享笔记 (共有 篇笔记) |
