怎么封装JS和CSS文件为服务器端控件

分类: asp.net   出处:iocblog整理  更新时间:2009-04-06   添加到收藏  

    我们以封装一个js的日期控件为列子,将它和服务器的textbox结合在一起做成一个服务器控件,以达到直接托上去就可以使用的效果。其实很简单,大家共同学习。先看看效果图:
  

 


  方法:
  首先:下载一个js的日期组件,带封装。
  然后:建一个日期类文件calendarbox.cs代码如下:

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.text;
  using system.web;
  using system.drawing;
  using system.web.ui;
  using system.web.ui.webcontrols;
  using system.web.ui.htmlcontrols;
  
  [assembly: webresource("wisesoft.web.control.wisesoft.calendar.calendar.js", "application/x-javascript", performsubstitution=true)]
  
  namespace wisesoft.web.control
  {
   [toolboxbitmap(typeof(calenderbox), "wisesoft.calendar.calendarbox.ico")]
   public class calenderbox : textbox
   {
   protected override void onprerender(eventargs e)
   {
   string calendar = calendercss.css;
   calendar = calendar.replace("$imaginurl$", this.imaginurl);
   if (!page.clientscript.isclientscriptblockregistered("_calendar"))
   page.clientscript.registerclientscriptblock(typeof(string), "_calendar", calendar);
  
   this.page.prerendercomplete += new eventhandler(page_prerendercomplete);
   this.cssclass = "wdate";
   this.attributes.add("onfocus","setday(this)");
   this.attributes.add("onchange", "checkdate(this.value)");
   base.onprerender(e);
   }
  
   void page_prerendercomplete(object sender, eventargs e)
   {
   page.clientscript.registerclientscriptresource(this.gettype(), "wisesoft.web.control.wisesoft.calendar.calendar.js");
   }
  
   /**//// <summary>
   /// 弹出日期控件小图片的地址
   /// </summary>
   [bindable(true)]
   [category("图标设置")]
   [defaultvalue("imagin/calender.gif")]
   [localizable(true)]
   public string imaginurl
   {
   get
   {
   string s = (string)viewstate["imaginurl"];
   return ((s == null) ? "imagin/calender.gif" : s);
   }
   set
   {
   viewstate["imaginurl"] = value;
   }
   }
  
   /**//// <summary>
   /// 设置日期,时间的初始格式。
   /// </summary>
   [bindable(true)]
   [category("初始化设置")]
   [defaultvalue(false)]
   [localizable(true)]
   public bool showtime
   {
   get
   {
   bool s = (bool)viewstate["showtime"];
   if (viewstate["showtime"] != null)
   {
   return s;
   }
   return false;
   }
   set
   {
   viewstate["showtime"] = value;
   }
   }
  
  
   /**//// <summary>
   /// 注样式文件
   /// </summary>
   /// <param name="path"></param>
   private void registercssfile(string path)
   {
   htmllink link1 = new htmllink();
   link1.attributes["type"] = "text/css";
   link1.attributes["rel"] = "stylesheet";
   link1.attributes["href"] = path;
   this.page.header.controls.add(link1);
   }
   }
  } 

  注意:[assembly: WebResource("Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js", "application/x-javascript", PerformSubstitution=true)]是用来封装你的JS文件,要使用你项目的名字加上你JS文件的名字,还需要将你的JS文件做一点设置,点右件,选择属性--->然后选择高级,选择生成操作-->选择嵌入的资源,这样才能将JS文件封装进去,当然如果有图片或者是CSS文件也是一样的。 (文章来源 www.iocblog.net)

[1] [2] 下一页


Tag: TextBox ,控件



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。