关于设置WebControls里的treeview控件的图片路径

一般我们使用这个treeview控件时都是在虚拟目录下复制webctrl_client目录到默认网站的根目录下,其实这对开发人员只是很简单的一个步骤,但是在打包部署的时候确碰到了问题,假设你的网站是安装在虚拟目录下,你怎么使你的安装程序自动复制这个目录到相应的地方去呢,这是个问题 .于是google,下载了 http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp里wencontrols的代码并安装,查看treeview.cs,终于找到主要是AddPathToFilename这个函数来控制目录得,而这个函数在BaseRichControl.cs的抽象类里定义

         //  --------------------------------------------------------------------
        
//  Common Files
        
//  --------------------------------------------------------------------

        
/// <summary>
        
/// Adds the common file path to the filename.
        
/// </summary>
        
/// <param name="filename">The filename to qualify with the common path.</param>
        
/// <returns>The full path of the filename with the common path.</returns>

         protected   string  AddPathToFilename( string  filename)
        
{
            
return AddPathToFilename(Context, filename);
        }


        
/// <summary>
        
/// Static version of AddPathToFilename so that classes not deriving from
        
/// BaseRichControl can still find the common files path.
        
/// </summary>
        
/// <param name="context">The context from which to get the configuration.</param>
        
/// <param name="filename">The filename to qualify with the common path.</param>
        
/// <returns>The full path of the filename with the common path.</returns>

         internal   static   string  AddPathToFilename(HttpContext context,  string  filename)
        
{
            
return FindCommonPath(context) + filename;
        }


        
/// <summary>
        
/// Finds the path for client files used be server controls.
        
/// </summary>
        
/// <param name="context">The context from which to get the configuration.</param>
        
/// <returns>The path name.</returns>

         private   static   string  FindCommonPath(HttpContext context)
        
{
            
// Look at the current configuration for the path
            if (context != null)
            
{
                NameValueCollection table 
= (NameValueCollection)context.GetConfig(ConfigName);
                
if (table != null)
                
{
                    
string path = (string)table[CommonFilesKey];
                    
if (path != null)
                    
{
                        
return CleanupPath(path);
                    }

                }

            }


            
// Return the default path with version number
            Assembly assembly = typeof(BaseRichControl).Assembly;
            Version version 
= assembly.GetName().Version;

            
return DefaultCommonFilesRoot + version.Major.ToString() + "_" + version.Minor.ToString() + "/";
        }


,本来开始的想法是改这个函数,后来发现其实它还有个可配置的路径接口,还是先配置吧!

于是在web.config加入以下节

     < configSections >
        
< section  name ="MicrosoftWebControls"  type ="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"   />     
    
</ configSections >
 
    
< MicrosoftWebControls >
        
< add  key ="CommonFiles"  value ="/web/treepath/" ></ add >         
    
</ MicrosoftWebControls >

注意:configSections一定要放在第一个子节最前面.

剪切默认网站的webctrl_client目录到虚拟目录web/treepath/下,运行程序, 树型界面出现了,只是前面的加减号出现问题,再右键查看WEB代码,发现SystemImagesPath属性还是指到webctrl_client目录下,看了SystemImagesPath的代码,把treeview控件的SystemImagesPath设置为空,再次运行程序,OK!全部通过,treeview的图片目录再也不需要依赖默认网站的图片目录了,打包也变的方便了,如果是几个网站在一个机器上,你也可以设置自己独立的treeview图片风格了,嘿嘿,再此写下这些供大家参考
posted on 2005-06-01 00:43 ttyp 阅读(4263) 评论(33)   编辑  收藏 引用 收藏至365Key 所属分类: ASP.NET


#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-01 14:07 napoler
可不可以介绍详细点?我在Web.config中加了那个配置就出错了:配置错误。最快的方法就是弄个Demo
Thank You   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-01 14:28 ttyp
to mancini:
没做过,为什么要private?

to napoler:
你报什么错啊,注意要把那两段放第一节的最前面   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-02 08:42 mancini
to ttyp:
放到gac里面增加部署的工作量啊,private 只需要copy就可以了。   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-02 08:46 ttyp
.net的部署不是只要xcopy么   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-02 11:28 mancini
不是的,强命名的程序集可以xcopy但是那样就不是所有的程序都能用了,而是只有你部署的那个程序用了。如果加入到gac里面就是所有的程序可以通过public key等来引用了。
   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-02 13:12 ttyp
“而是只有你部署的那个程序用了”

不正是private么,我都要糊涂了

这里有篇文章
http://www.aspcool.com/lanmu/browse1.asp?ID=1183&bbsuser=aspnet   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-03 10:12 mancini
to ttyp:
是我搞错了。sorry.
错误原因是,我把网页上的代码之间拷贝到我的web.config里面去了,结果中间有些空格是非法的,删去就可以了。
恐怖啊,以后少拷贝网页上的代码   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-03 10:47 ttyp
呵呵,我很欣赏你错误后写原因。CSDN里提问的人即使解决了问题也没人做总结答案的,这是个不错的习惯   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-08-12 04:12 wfc]
我加上了不起作用,是不是还要调别的方法????   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-08-12 19:12 ttyp
也许你的目录没有设置正确,注意最后一定要带反斜杠   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-11-22 18:51 云淡风清
我弄了一个晚上,也没弄出来。哪位大哥能告诉我一下。   回复
  

#  不行啊大哥 2005-11-26 23:46 路过
web config 是不是应该这样写啊?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="MicrosoftWebControls" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<MicrosoftWebControls>
<add key="CommonFiles" value="/web/treepath/"></add>
</MicrosoftWebControls>   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2005-11-27 11:05 ttyp
是这样啊,不过你的key="CommonFiles"的value属性,改为你的图片路径(相对虚拟目录),这里"/web/treepath/"为我例子中的目录   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-02-08 11:46 mpokky
为什么我这么做了以后,treeview还是不显示   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-02-16 13:50 mxf
我使用installshield打包,可以在把webctrl_client目录写到wwwroot目录下。不过在web.config加入以下节

<configSections>
<section name="MicrosoftWebControls" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<MicrosoftWebControls>
<add key="CommonFiles" value="/web/treepath/"></add>
</MicrosoftWebControls>
还是很有用的,简化了打包文件的制作 ;谢谢咯   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-02-16 14:59 ttyp
不仅仅是简化安装,而且在你有多个虚拟目录时,想让自己的树和别人的树图标不一样就很有用了   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-04-10 22:46 Fantasier
to ttyp
你好,我已按照你的方法做了,但还是不行,不仅没图片也没平常的效果了,
这是什么原因呢。。会不会是因ieWebControl的版本不同而设置也不同呢?
我用的是 已打包好的直接安装的MSI程序。。请指教。。   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-04-11 08:30 ttyp
<add key="CommonFiles" value="/web/treepath/"></add>
路径设置对了么,注意前后都有反斜杠   回复
  

#  我怎么试都不成功,发现版本不同 2006-05-13 17:07 孜孜
Version=1.0.5000.0

而我的是1.0.2.226
microsoft.com下的也是1.0.2.226的

有些迷茫,高手再指点!   回复
  

#  搞定了 2006-05-13 17:45 孜孜
<add key="CommonFiles" value="/webctrl_client/1_0/"></add>
的VALUE值是相对虚拟目录而言的,而SystemImagesPath的正确指向应该是到webctrl_client/1_0/treeimages

比如我照上面的设置 那么

>? tv.SystemImagesPath
"/webctrl_client/1_0/treeimages/"

就证明引用正确了   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-05-13 17:49 孜孜
我晕,前面还应该加上虚拟目录

<add key="CommonFiles" value="/虚拟目录名/webctrl_client/1_0/"></add>   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-05-13 17:54 孜孜
我的思路对不对?

如果把虚拟目录名加到里面其不是理不爽了吗?

安装部署时的虚拟目录名是可先的,这其不是又给安装部署时添加麻烦吗?

我还是保存原有的安装部署(把webctrl_client复制到站点目录下)   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-05-13 18:49 ttyp
不用虚拟目录的,如果需要虚拟目录也没什么太大的意思了,你再看看   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-05-14 13:01 keyplayer
配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 创建 MicrosoftWebControls 的配置节处理程序时出错: 未能加载文件或程序集“System, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

源错误:


行 4: <!--自配置节-->
行 5: <configSections>
行 6: <section name="MicrosoftWebControls" type="System.Configuration.NameValueSectionHandler,System,Version=1.0.2.226,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
行 7: </configSections>
行 8: <MicrosoftWebControls>


源文件: d:/inetpub/wwwroot/webkpbbs/web.config 行: 6

程序集加载跟踪: 下列信息有助于确定程序集“System, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35”无法加载的原因。


警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM/Software/Microsoft/Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM/Software/Microsoft/Fusion!EnableLog]。

   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-07-14 17:32 bit2000
你好,有人问用C# .net2 代码实现树形目录,但是不用treeview的图片,代码如下(我测试了怎么都不显示树形标):
Default.aspx的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=" http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server">
<Nodes>
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点">
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
<asp:TreeNode Text="新建节点" Value="新建节点"></asp:TreeNode>
</Nodes>
</asp:TreeView>

</div>
</form>
</body>
</html>


Default.aspx.cs的代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}

   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-07-14 17:34 bit2000
测试是在.net2的虚拟主机环境下测试的,web根目录下就这两个文件。有人说可以正常,但是我测试了是怎么都不正常   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-07-14 18:18 ttyp
设置了webconfig文件么   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-07-15 00:15 bit2000
不用设置web.config文件,我已经在本地模拟虚机环境测试过,可以正常显示。
模拟的环境:win2003中文企业版,.net2.0(版本号:2.0.50727.42),net2的中文简体语言包不用安装也可以正常显示测试代码。就是放到真正的虚机环境上不行了,因为这个代码是不要Microsoft.Web.UI.WebControls 方式需要图片文件来显示树形的方式的。而用Microsoft.Web.UI.WebControls 方式就是你上面所说的我放在真正虚拟环境里已经测试正常,哈哈,就是我现在所要的这种不正常,郁闷得很!
检查过c:/windows/microsoft.net ;c:/windows/temp;c:/windows/IIS Temporary Compressed Files等目录的权限感觉都很正常,不知道我说得这种方式还需要什么目录或什么dll文件得特定权限呢?现在我想问题就出现在权限上,而不是net版本不对或也非什么控件没装引起。   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-07-15 07:26 ttyp
不好意思,2005的没测试过,反编译控件看看怎么指定路径的   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-09-01 14:58 sdfasdf
@mancini
asdfasdf   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-09-07 20:00 H_J_H


<MicrosoftWebControls>
<add key="CommonFiles" value="/website/webctrl_client/1_0" />
</MicrosoftWebControls>

但不知道究竟这个CommonFiles是怎样修改啊?
我的程序就把"webctrl_client/1_0"是放到虚拟目录下的Admin/Images/webctrl_client/1_0
我试过怎样修改都不行啊!!   回复
  

#  re: 关于设置WebControls里的treeview控件的图片路径 2006-09-07 20:43 ttyp
"/虚拟目录/webctrl_client/1_0   回复 
 
#  re: 关于设置WebControls里的treeview控件的图片路径 2005-06-01 09:47 mancini
Web controls使创建forms 和HTML controls.的工作将会变得简单易行。例如在ASP中典型的选择框 selectbox,你不得不创建一个循环以便让控制系统装入数据。但在ASP.net,你将会拥有一个"data-bound",这意味着它会与数据源连接,并会自动装入数据。这些功能听起来简直是妙不可言,但是让我们细细的来检验一下。   通过传统的ASP和ADO,你能够选择在哪放置数据库游标(服务器一边或是用户一边),至于其它的,是依靠你想要创建的性能和功能类型来做决定。但是在ASP+,你不再有选择。因为在web controls和服务器之间的链接,迫使你不得不将所有的事物都放置在客户方。对于客户和服务器来说,不啻于一个性能中心,因为它必须将所有的数据存储在本地内存。   Web controls 也在严格的XML 术语中引进了新的语法。因此,你会不再有比较松散的代码编辑过程,你必须关闭所有的标记符,使用定义等等。当然,大多数人对于适应这个功能会感到非常痛苦,但是严格的的代码编辑过程通常意味着更少的错误。   另一方面关于Web forms 缺陷在于,要想使用Web form的大部分功能,你必须使用forms 的POST 方法;例如,state管理。当你使用GET方法时,所有的all best 会被关闭掉,你就不能使用相应的功能。这个限制实在太没必要了。   ASP.NET Server Controls   许多系统过去的组成部分现在成为ASP.NET Server Controls。例如:ad rotator已升级,并开始用XML来存储它的信息,但不仅仅于此。这儿有一整套控制系统,它可以做任何事情,从代为管理你的表单状态到显示日历、桌面。事实上,几乎每HTML元素都有ASP.NET Server Controls,通过ASP.NET Server Control,可以与HTML元素程式化的相互影响。例如,你不再需要为了维持一个在LISTBOX选定的 OPTION而大走弯路。你只需指示LISTBOX 在服务器运作并代你进行管理就可以了。更为方便的是,你只需设定好程序,LISTBOX就会按指令依次显示选定的项目。 也许在这个新的 controls中最有趣的莫过于 DataGrid。Datagrid是一个多列的数据绑定网格,通过它你可以轻而易举的将数据置于其中。它同时提供分页、排序等所有你所期望的功能。   记录丢失,对于程序员来说是一个非常严重的事情。在新的系统中, 中心对象是Dataset。它与recordset相类似,是数据内在存储记忆的副本。Dataset对于您的开发来说是中心所在,但是现在,我只能说它只是相近与XML,使程式在简单化和统一化的过程中,相对简单。你还是可以用你过去用过的来处理一切…(除了服务器端游标)… 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值