服务器控件,还是treeview的问题,急!

NoReady 2004-07-06 06:02:47
//这是所有的代码:
//-------------------------
/// <文件声明>
/// <重要等级>重要</重要等级>
/// <公司名称>杭州华讯通信科技有限公司</公司名称>
/// <项目组>文档库组件开发组</项目组>
/// </文件声明>
/// <文件描述>
/// 完成目录树的显示、创建、删除功能。
/// </文件描述>
/// <创建时间>2004-7-6</创建时间>
/// <建立者>王宏武</建立者>
/// <版本号>Ver 0.1</版本号>
///
/// <修改>
/// <修改记录>
/// <修改记录编号></修改记录编号>
/// <修改时间></修改时间>
/// <修改者></修改者>
/// <新版本号></新版本号>
/// </修改记录>
/// </修改>
///


using System;
using System.IO;
using System.Drawing;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using Microsoft.Web.UI.WebControls;

namespace HuaXun.DocLibrary.UI
{

/// <summary>
/// 文档库目录树控件。
/// </summary>
/// <remarks>
/// 此控件用到的微软的TreeView控件,
/// 所以依赖于Microsoft.Web.UI.WebControls.dll,
/// 在使用该控件时,需要将Microsoft.Web.UI.WebControls.dll也引用。
/// </remarks>
public class ucFolderTreeCtrl:WebControl, INamingContainer
{

#region private variant

/// <summary>
/// 节点的组成
/// </summary>
private struct TreeNodeField
{
/// <summary>
/// 目录Url
/// </summary>
public const string ConUrl="Url";

/// <summary>
/// 目录显示名称
/// </summary>
public const string ConDisplayName="DisplayName";

/// <summary>
/// 目录父Url
/// </summary>
public const string ConParentUrl="ParentUrl";
}

/// <summary>
/// 订阅按钮
/// </summary>
LinkButton lnbtnSubscription;

/// <summary>
/// 删除按钮
/// </summary>
LinkButton lnbtnDelete;

/// <summary>
/// 增加按钮
/// </summary>
LinkButton lnbtnAdd;

/// <summary>
/// 目录树
/// </summary>
TreeView trvFolder;

#endregion

#region constructor

/// <summary>
/// 构造函数
/// </summary>
public ucFolderTreeCtrl():base()
{
this.Font.Name = "verdana";
this.Font.Size = FontUnit.Point(8);
this.BackColor = Color.Gainsboro;
this.ForeColor = Color.Black;
this.BorderStyle = BorderStyle.Solid;
this.BorderWidth = Unit.Parse("1px");
this.CacheDuration=60;
}

#endregion

#region public methods

/// <summary>
/// 节点选择事件的委托
/// </summary>
public delegate void SelectEventHandler(object sender, TreeViewSelectEventArgs e);

/// <summary>
/// 选择事件
/// </summary>
public event SelectEventHandler SelectedIndexChange;

/// <summary>
/// 触发事件SelectedIndexChange
/// </summary>
/// <param name="e"></param>
protected virtual void OnPageIndexChanged(TreeViewSelectEventArgs e)
{
if (SelectedIndexChange != null)
SelectedIndexChange(this, e);
}

/// <summary>
/// 目录树数据的缓存时间,以秒为单位,默认为60秒。
/// </summary>
public int CacheDuration
{
get {return Convert.ToInt32(ViewState["CacheDuration"]);}
set {ViewState["CacheDuration"] = value;}

}

/// <summary>
/// 重写Render,以便自定义输出控件的外观。
/// </summary>
/// <param name="output"></param>
protected override void Render(HtmlTextWriter output)
{
//为了组合该控件,所以在设计模式前子控件就被创建,而不在设计时输出控件。
if (this.Site != null && this.Site.DesignMode)
CreateChildControls();

base.Render(output);
}

/// <summary>
/// 重写CreateChildControls,建立内部子控件。
/// </summary>
protected override void CreateChildControls()
{
Controls.Clear();
ClearChildViewState();

BuildControlHierarchy();
}

/// <summary>
/// 此函数是外部调用该控件的唯一接口,
/// 当该函数被调用时开始构造文件目录树。
/// </summary>
public override void DataBind()
{
//触发基类的数据绑定事件
base.DataBind();

//在数据绑定之后必需要重新创建子控件,所以此时将它设为false.
this.ChildControlsCreated = false;

//显示数据
this.InitTree();
}

#endregion

#region private methods

/// <summary>
/// 建立控件及布局
/// </summary>
private void BuildControlHierarchy()
{
// 建一个2行4列的表格
Table t = new Table();
t.Font.Name = this.Font.Name;
t.Font.Size = this.Font.Size;
t.BorderStyle = this.BorderStyle;
t.BorderWidth = this.BorderWidth;
t.BorderColor = this.BorderColor;
t.Width = this.Width;
t.Height = this.Height;
t.BackColor = this.BackColor;
t.ForeColor = this.ForeColor;

//表格行变量
TableRow row;
//单元格变量
TableCell cell;

// 添加一个表格行(第1行)--------------
row = new TableRow();
row.VerticalAlign=VerticalAlign.Top;
row.Width=this.Width;
row.Height=Unit.Pixel(10);
t.Rows.Add(row);

// 增加‘订阅’按钮及单元格
cell = new TableCell();
this.lnbtnSubscription=new LinkButton();
this.lnbtnSubscription.ID="lnbtnSubscription";
this.lnbtnSubscription.ToolTip="订阅选中的目录";
this.lnbtnSubscription.Text="订阅";
this.lnbtnSubscription.Enabled =true;
this.lnbtnSubscription.Click+=new EventHandler(lnbtnSubscription_Click);
cell.Controls.Add(lnbtnSubscription);
row.Cells.Add(cell);

// 增加‘删除’按钮及单元格
cell = new TableCell();
this.lnbtnDelete=new LinkButton();
this.lnbtnDelete.ID="lnbtnDelete";
this.lnbtnDelete.ToolTip="删除选中的目录";
this.lnbtnDelete.Text="删除";
this.lnbtnDelete.Enabled =true;
this.lnbtnDelete.Click+=new EventHandler(lnbtnDelete_Click);
cell.Controls.Add(lnbtnDelete);
row.Cells.Add(cell);

// 增加‘增加目录’按钮及单元格
cell = new TableCell();
this.lnbtnAdd=new LinkButton();
this.lnbtnAdd.ID="lnbtnAdd";
this.lnbtnAdd.ToolTip="在选中的目录下增加一个目录";
this.lnbtnAdd.Text="增加目录";
this.lnbtnAdd.Enabled =true;
this.lnbtnAdd.Click+=new EventHandler(lnbtnAdd_Click);
cell.Controls.Add(lnbtnAdd);
row.Cells.Add(cell);

// 添加另一个表格行(第2行)--------------
row = new TableRow();
row.Width=this.Width;
row.Height=this.Height;
row.HorizontalAlign=HorizontalAlign.Left;
t.Rows.Add(row);

//增加一个单元格及TreeView控件
cell=new TableCell();
cell.VerticalAlign=VerticalAlign.Top;
cell.ColumnSpan=3;
cell.Width=this.Width;
cell.Height =row.Height;

this.trvFolder=new TreeView();
this.trvFolder.ID="trvFolder";
this.trvFolder.Enabled =true;
this.trvFolder.Visible =true;
this.trvFolder.Height=row.Height;
this.trvFolder.Width=row.Width;
this.trvFolder.ShowLines=true;
this.trvFolder.ShowPlus =true;
this.trvFolder.SelectExpands=true;
this.trvFolder.ShowToolTip =true;
this.trvFolder.ToolTip ="aaaa文件夹目录";
this.trvFolder.SelectedIndexChange+=new Microsoft.Web.UI.WebControls.SelectEventHandler(trvFolder_SelectedIndexChange);

cell.Controls.Add(trvFolder);
row.Cells.Add(cell);

// 把表格加入控件
this.Controls.Add(t);
}
...全文
244 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
goody9807 2004-07-07
  • 打赏
  • 举报
回复
你按照我那样做 没问题的
NoReady 2004-07-07
  • 打赏
  • 举报
回复
goody9807() :已收到!
xxdneu 2004-07-07
  • 打赏
  • 举报
回复
兄弟,你应该加这么个函数
protected override void OnLoad(EventArgs e)
{
base.OnLoad();
DataBind();
}

你这个树要想出现,你得有节点才行,结果你把它放到了DataBind()函数里了,那么你的页面每次回发的时候你都得手动调用DataBind()才行,那不是麻烦吗,所以你就放到OnLoad里
goody9807 2004-07-07
  • 打赏
  • 举报
回复
发完了 OK
fengyuw@163.com
NoReady 2004-07-07
  • 打赏
  • 举报
回复
好的,谢谢,我这就查收去
goody9807 2004-07-07
  • 打赏
  • 举报
回复
发完了 OK
NoReady 2004-07-07
  • 打赏
  • 举报
回复
TO goody9807() 、redbb(....Dotneter....) :
我没有收到啊!
能不能发到fengyuw@163.com ?
请问2位的MSN是多少?我好向你们计教,我的是:fengyuwhw@hotmail.com
goody9807 2004-07-07
  • 打赏
  • 举报
回复
OK
goody9807 2004-07-07
  • 打赏
  • 举报
回复
发到hotmail吗
NoReady 2004-07-07
  • 打赏
  • 举报
回复
好的,谢谢各位,我马上查收
goody9807 2004-07-07
  • 打赏
  • 举报
回复
OK 成功了
我给你把 工程发过去
elite2018 2004-07-07
  • 打赏
  • 举报
回复
have sent my codes
NoReady 2004-07-07
  • 打赏
  • 举报
回复
我的代码运行没出错,只是treeview看不见,能不能用MSN啊?我的MSN:
fengyuwhw@hotmail.com
NoReady 2004-07-07
  • 打赏
  • 举报
回复
啊,QQ,我们不允许上的,我争取下看:)
goody9807 2004-07-07
  • 打赏
  • 举报
回复
我已经运行可以了 确实只有3个按钮
goody9807 2004-07-07
  • 打赏
  • 举报
回复
你的代码怎么运行不了

QQ 40276213
NoReady 2004-07-07
  • 打赏
  • 举报
回复
可是斑竹们好像都不在啊
lengfeng8866 2004-07-07
  • 打赏
  • 举报
回复
请斑竹来看看吧。。。期待你的问题的答案
小贵子88 2004-07-07
  • 打赏
  • 举报
回复
对WEB不熟,顶
NoReady 2004-07-07
  • 打赏
  • 举报
回复
问题解决了大半了,是关闭这个CASE的时间了,非常感觉各位的帮助,特别谢谢goody9807() ,花了足够的时间帮我,再次感谢!
加载更多回复(11)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧