设置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的抽象类里定义
//--------------------------------------------------------------------
//CommonFiles
//--------------------------------------------------------------------

///<summary>
///Addsthecommonfilepathtothefilename.
///</summary>
///<paramname="filename">Thefilenametoqualifywiththecommonpath.</param>
///<returns>Thefullpathofthefilenamewiththecommonpath.</returns>
protectedstringAddPathToFilename(stringfilename)

{
returnAddPathToFilename(Context,filename);
}

///<summary>
///StaticversionofAddPathToFilenamesothatclassesnotderivingfrom
///BaseRichControlcanstillfindthecommonfilespath.
///</summary>
///<paramname="context">Thecontextfromwhichtogettheconfiguration.</param>
///<paramname="filename">Thefilenametoqualifywiththecommonpath.</param>
///<returns>Thefullpathofthefilenamewiththecommonpath.</returns>
internalstaticstringAddPathToFilename(HttpContextcontext,stringfilename)

{
returnFindCommonPath(context)+filename;
}

///<summary>
///Findsthepathforclientfilesusedbeservercontrols.
///</summary>
///<paramname="context">Thecontextfromwhichtogettheconfiguration.</param>
///<returns>Thepathname.</returns>
privatestaticstringFindCommonPath(HttpContextcontext)

{
//Lookatthecurrentconfigurationforthepath
if(context!=null)

{
NameValueCollectiontable=(NameValueCollection)context.GetConfig(ConfigName);
if(table!=null)

{
stringpath=(string)table[CommonFilesKey];
if(path!=null)

{
returnCleanupPath(path);
}
}
}
//Returnthedefaultpathwithversionnumber
Assemblyassembly=typeof(BaseRichControl).Assembly;
Versionversion=assembly.GetName().Version;
returnDefaultCommonFilesRoot+version.Major.ToString()+"_"+version.Minor.ToString()+"/";
}
,本来开始的想法是改这个函数,后来发现其实它还有个可配置的路径接口,还是先配置吧!
于是在web.config加入以下节
<configSections>
<sectionname="MicrosoftWebControls"type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
</configSections>
<MicrosoftWebControls>
<addkey="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
评论