/// <summary>
/// 初始化目录树
/// </summary>
private void InitTree()
{
//生成数据源
CreateDataSource();
//显示目录树
InitTree(trvFolder.Nodes,TopParentUrl);
} /// <summary>
/// 递归地生成目录树
/// </summary>
/// <param name="nodes"></param>
/// <param name="parentId"></param>
private void InitTree(TreeNodeCollection nodes,string parentId)
{
try
{
//创建视图对象
DataView dv=new DataView(); //临时节点
TreeNode tmpNode;
string strId; //获取Table表
dv.Table=(DataTable) Page.Cache[CacheKeyName];
dv.RowFilter="ParentUrl='" + parentId + "'" ; //遍历循环
foreach(DataRowView drv in dv)
{
//创建一个TreeNode
tmpNode=new TreeNode();
tmpNode.ID=drv[TreeNodeField.ConUrl].ToString();
tmpNode.Text=drv[TreeNodeField.ConDisplayName ].ToString();
nodes.Add(tmpNode);
strId=drv[TreeNodeField.ConParentUrl].ToString(); //调用自身
InitTree(tmpNode.Nodes,tmpNode.ID);
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 取得数据源
/// </summary>
private void CreateDataSource()
{
//取得目录的数据
DataTable data=(DataTable) Page.Cache[CacheKeyName]; //如果没有缓存,则需要重新取数据
if (data == null)
{ //-------------------------这段为测试数据---------------------
data=new DataTable();
data.TableName="FolderTree";
data.Columns.Add(TreeNodeField.ConUrl);
data.Columns.Add(TreeNodeField.ConDisplayName);
data.Columns.Add(TreeNodeField.ConParentUrl);
DataRow row;
//根目录
row=data.NewRow();
row[TreeNodeField.ConUrl ]=0;
row[TreeNodeField.ConDisplayName ]="文件夹目录";
row[TreeNodeField.ConParentUrl]="";
data.Rows.Add(row); //子目录
for(int i=1;i<=5;i++)
{
row=data.NewRow();
row[TreeNodeField.ConUrl]=i.ToString();
row[TreeNodeField.ConDisplayName]="一级子目录"+i.ToString();
row[TreeNodeField.ConParentUrl]=0;
data.Rows.Add(row); for(int j=0;j<5;j++)
{
row=data.NewRow();
row["Url"]=i.ToString()+j.ToString();
row["DisplayName"]="二级子目录"+i.ToString()+j.ToString();
row["ParentUrl"]=i.ToString();
data.Rows.Add(row);
}
}
//-------------------------这段为测试数据---------------------
//将数据缓存
this.Page.Cache.Insert(CacheKeyName,data,null,
DateTime.Now.AddSeconds(CacheDuration),
System.Web.Caching.Cache.NoSlidingExpiration);
} }
/// <summary>
/// 缓存名称
/// </summary>
private string CacheKeyName
{
get
{
return UniqueID + "_Data";
}
} /// <summary>
/// 根目录Url(表中第一行的Url)
/// </summary>
private string TopParentUrl
{
get
{
//取得数据
CreateDataSource();
DataTable data=(DataTable) Page.Cache[CacheKeyName];
//返回第一行的Url值
return (string)data.Rows[0][TreeNodeField.ConUrl];
}
} /// <summary>
/// 订阅事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lnbtnSubscription_Click(object sender, EventArgs e)
{
this.Page.Response.Write("<script>alert('订阅')</script>");
}
/// <summary>
/// 删除目录事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lnbtnDelete_Click(object sender, EventArgs e)
{
this.Page.Response.Write("<script>alert('删除')</script>"); } /// <summary>
/// 增加目录事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lnbtnAdd_Click(object sender, EventArgs e)
{
this.Page.Response.Write("<script>alert('增加')</script>");
} /// <summary>
/// 树节点选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trvFolder_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
OnPageIndexChanged(e);
} #endregion }
}
http://community.csdn.net/Expert/topic/3150/3150444.xml?temp=.3521234
一样的问题,最后一贴错了。
http://community.csdn.net/Expert/topic/3150/3150444.xml?temp=.8042414
解决了一起结贴
[email protected]
我没有收到啊!
能不能发到[email protected] ?
请问2位的MSN是多少?我好向你们计教,我的是:[email protected]
[email protected]
protected override void OnLoad(EventArgs e)
{
base.OnLoad();
DataBind();
}你这个树要想出现,你得有节点才行,结果你把它放到了DataBind()函数里了,那么你的页面每次回发的时候你都得手动调用DataBind()才行,那不是麻烦吗,所以你就放到OnLoad里
{
this.trvFolder=new TreeView();
this.trvFolder.ID="trvFolder";
this.trvFolder.Enabled =true;
this.trvFolder.Visible =true;
this.trvFolder.Height=200;
this.trvFolder.Width=200;
this.trvFolder.ShowLines=true;
this.trvFolder.ShowPlus =true;
this.trvFolder.SelectExpands=true;
this.trvFolder.ShowToolTip =true;
this.trvFolder.ToolTip ="aaaa文件夹目录";
TreeNode tmpNode = new TreeNode();
tmpNode.Text ="test1";
TreeNode tmpNode2 = new TreeNode();
tmpNode2.Text ="test2";
this.trvFolder.Nodes.Add(tmpNode);
this.trvFolder.Nodes.Add(tmpNode2);
this.InitTree();
this.Controls.Add(trvFolder);
}
{
/// <summary>
/// 目录Url
/// </summary>
public const string ConUrl="Url"; /// <summary>
/// 目录显示名称
/// </summary>
public const string ConDisplayName="DisplayName"; /// <summary>
/// 目录父Url
/// </summary>
public const string ConParentUrl="ParentUrl";
}
private void InitTree()
{
CreateDataSource();
InitTree(trvFolder.Nodes,TopParentUrl);
}
private void InitTree(TreeNodeCollection nodes,string parentId)
{
try
{
//创建视图对象
DataView dv=new DataView(); //临时节点
TreeNode tmpNode;
string strId; //获取Table表
//dv.Table=(DataTable) Page.Cache[CacheKeyName];
dv.Table =CDS();
dv.RowFilter="ParentUrl='" + parentId + "'" ; //遍历循环
foreach(DataRowView drv in dv)
{
//创建一个TreeNode
tmpNode=new TreeNode();
tmpNode.ID=drv[TreeNodeField.ConUrl].ToString();
tmpNode.Text=drv[TreeNodeField.ConDisplayName ].ToString();
nodes.Add(tmpNode);
strId=drv[TreeNodeField.ConParentUrl].ToString(); //调用自身
InitTree(tmpNode.Nodes,tmpNode.ID);
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 取得数据源
/// </summary>
private void CreateDataSource()
{
//取得目录的数据
DataTable data=(DataTable) Page.Cache[CacheKeyName];
//如果没有缓存,则需要重新取数据
if (data == null)
{ //-------------------------这段为测试数据---------------------
data=new DataTable();
data.TableName="FolderTree";
data.Columns.Add(TreeNodeField.ConUrl);
data.Columns.Add(TreeNodeField.ConDisplayName);
data.Columns.Add(TreeNodeField.ConParentUrl);
DataRow row;
//根目录
row=data.NewRow();
row[TreeNodeField.ConUrl ]=0;
row[TreeNodeField.ConDisplayName ]="文件夹目录";
row[TreeNodeField.ConParentUrl]="";
data.Rows.Add(row); //子目录
for(int i=1;i<=5;i++)
{
row=data.NewRow();
row[TreeNodeField.ConUrl]=i.ToString();
row[TreeNodeField.ConDisplayName]="一级子目录"+i.ToString();
row[TreeNodeField.ConParentUrl]=0;
data.Rows.Add(row); for(int j=0;j<5;j++)
{
row=data.NewRow();
row["Url"]=i.ToString()+j.ToString();
row["DisplayName"]="二级子目录"+i.ToString()+j.ToString();
row["ParentUrl"]=i.ToString();
data.Rows.Add(row);
}
}
//-------------------------这段为测试数据---------------------
//将数据缓存
this.Page.Cache.Insert(CacheKeyName,data,null,
DateTime.Now.AddSeconds(CacheDuration),
System.Web.Caching.Cache.NoSlidingExpiration);
}
}
private DataTable CDS()
{
DataTable data;
data=new DataTable();
data.TableName="FolderTree";
data.Columns.Add(TreeNodeField.ConUrl);
data.Columns.Add(TreeNodeField.ConDisplayName);
data.Columns.Add(TreeNodeField.ConParentUrl);
DataRow row;
//根目录
row=data.NewRow();
row[TreeNodeField.ConUrl ]=0;
row[TreeNodeField.ConDisplayName ]="文件夹目录";
row[TreeNodeField.ConParentUrl]="";
data.Rows.Add(row); //子目录
for(int i=1;i<=5;i++)
{
row=data.NewRow();
row[TreeNodeField.ConUrl]=i.ToString();
row[TreeNodeField.ConDisplayName]="一级子目录"+i.ToString();
row[TreeNodeField.ConParentUrl]=0;
data.Rows.Add(row); for(int j=0;j<5;j++)
{
row=data.NewRow();
row["Url"]=i.ToString()+j.ToString();
row["DisplayName"]="二级子目录"+i.ToString()+j.ToString();
row["ParentUrl"]=i.ToString();
data.Rows.Add(row);
}
}
return data;
}
public int CacheDuration
{
get {return Convert.ToInt32(ViewState["CacheDuration"]);}
set {ViewState["CacheDuration"] = value;} } /// <summary>
/// 缓存名称
/// </summary>
private string CacheKeyName
{
get
{
return UniqueID + "_Data";
}
} /// <summary>
/// 根目录Url(表中第一行的Url)
/// </summary>
private string TopParentUrl
{
get
{
//取得数据
CreateDataSource();
DataTable data=(DataTable) Page.Cache[CacheKeyName];
//返回第一行的Url值
return (string)data.Rows[0][TreeNodeField.ConUrl];
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
string SourceFile="Data.XLS";
string TemplatePath=Server.MapPath("ExcelTemplate");
string DownloadPath=Server.MapPath("ExcelDownload");
string TempFileName = DateTime.Now.ToString("yyyyMMdd") +
DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS"; object missing = System.Reflection.Missing.Value; Excel.Application myExcel=new Excel.Application();
myExcel.Application.Workbooks.Open(TemplatePath+"\\"+SourceFile,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.Workbook myBook=myExcel.Workbooks[1];
Excel.Worksheet curSheet = (Excel.Worksheet)myBook.Sheets[1]; string DownloadFilePath=DownloadPath+"\\"+TempFileName; int i=0;
while (i<=10)
{
myExcel.Cells[4+i,2]=i.ToString();
myExcel.Cells[4+i,3]=i.ToString();
myExcel.Cells[4+i,4]=i.ToString();
myExcel.Cells[4+i,5]=i.ToString();
myExcel.Cells[4+i,6]=i.ToString();
i++;
}
curSheet.Cells.Font.Bold =true;
curSheet.Cells.Font.Name ="Verdana"; //myBook.Saved=true; myBook.SaveAs(DownloadFilePath,missing,"","",false,false,Excel.XlSaveAsAccessMode.xlNoChange,1,false,missing,missing,missing); //myBook.PrintPreview(0);
//myBook.PrintOut(missing,missing,missing,missing,missing,missing,missing,missing);
myBook.Close(false, null,null);
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myBook = null;
myExcel = null;
GC.Collect();
string pstr="ExcelDownload//"+TempFileName;
// Response.Write("<a href="+pstr+">open file</a>");
// Response.End();
System.Diagnostics.Process.Start(pstr);
//Response.Redirect("ExcelDownload//"+TempFileName);
}
}