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

    技术2022-05-11  73

    一般我们使用这个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图片风格了,嘿嘿,再此写下这些供大家参考  

    最新回复(0)