• 摘要

  上一章,我们讲了嵌入.css文件,这一章,我们来讲一下嵌入.js文件,也顺带一个嵌入Image文件

  • 内容

  我们前面的几章,一运行,下拉框就显示出来了,但是DropDwonList的下拉框是被隐藏掉的,而且当我们点击文本框的时候,下拉框就显示出来了,当然,我们最终目标是做DropDwonCheckList控件,它既有TextBox的全部属性,也有DropDwonList的特性。本章我们就利用嵌入的.js来操作此控件。

  既然我们是做DropDwonCheckList控件,那我们还是以DropDwonCheckList命名一个类吧,在XYB.Controls层新建这个类,现在此层中就有两个类了。然后再新建一个JS文件夹,JS文件夹里面新建一个dropDwon.js文件,并把生成操作设置为"嵌入资源"。

  后台代码我们重新写过,在这里,我们把大体的框也搭好。我们先来看一下本章的最终要实现的效果。

  • 分析

  下拉框里面可分为两个大div ,假设就叫DropDwonHeadPanel(Panel就是Div),和DropDwonFooterPanel,DropDwonHeadPanel里面就存一个CheckBox,DropDwonFooterPanel里面再放两个div,分别叫DropDwonFooterLeftPanel和DropDwonFooterRightPanel,左边放"确定"按钮,右边放"取消"按钮,大致的布局就是这样。

1.下面是是dropDwon.css代码

#XYB_Controls_DropDownPanelID{
border:1px solid #ccc;
display:none;
}
#XYB_Controls_DropDownHeaderPanelID,#XYB_Controls_DropDownFooterPanelID{
height:20px; line-height:20px;width:%;
}
#XYB_Controls_DropDwonFooterPanelID{padding-top:50px;}
#XYB_Controls_DropDwonFooterLeftPanelID,#XYB_Controls_DropDwonFooterRightPanelID{
width:%;float:left;text-align:center;
}

2.JS代码也很简单,就一个点击的方法,下面是dropDwon.js代码

function dropDwonClick() {
$("XYB_Controls_DropDownPanelID").style.display = "block";
} function $(obj) {
return document.getElementById(obj);
}

3.接下的事就是我整个页面的代码

using System;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections.Generic; namespace XYB.Controls
{
public class DropDwonCheckList:TextBox
{
#region 属性与字段 [Description("下拉框的高度"),//属性的描述
Category("下拉框")//所属目录
]
public int DropDwonHeight
{
//如果前台控件没有给DropDwonHeight赋值,那它的初始值是100
get { return ViewState["DropDwonHeight"] == null ? : Convert.ToInt32(ViewState["DropDwonHeight"]); }
set { ViewState["DropDwonHeight"] = value; }
} [Description("下拉框的宽度"),
Category("下拉框")
]
public int DropdwonWidth
{
get { return ViewState["DropdwonWidth"] == null ? : Convert.ToInt32(ViewState["DropdwonWidth"]); }
set { ViewState["DropdwonWidth"] = value; }
} #endregion protected override void OnPreRender(EventArgs e)
{        base.OnPreRender(e);
//如果文件已经被加载了,就不用重复加载
if (!this.Page.ClientScript.IsClientScriptIncludeRegistered(this.GetType(),"XYB.Controls.JS.dropDwon.js"))
{
#region 加载嵌入资源.css文件
//获取嵌入资源.css文件
string cssHref = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "XYB.Controls.CSS.dropDwon.css");
string cssLink = string.Format("<link href='{0}' rel='stylesheet' type='text/css' />", cssHref);
LiteralControl litLink = new LiteralControl(cssLink);
litLink.ID = "XYB_Controls_dropDwonCss";
this.Page.Header.Controls.Add(litLink);
#endregion
//获取嵌入资源.js文件
this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "XYB.Controls.JS.dropDwon.js"); this.Attributes["onclick"] = "dropDwonClick()";//给文本框注册点击事件
}
} protected override void Render(HtmlTextWriter writer)
{
base.Render(writer); Panel pnlDropDown = new Panel();
pnlDropDown.ID = "XYB_Controls_DropDownPanelID";//名字写这么长,只为防止别人与我的控件ID相同
pnlDropDown.Height = DropDwonHeight;
pnlDropDown.Width = DropdwonWidth; #region 构造头部和尾部
StringBuilder strHtml = new StringBuilder();
strHtml.Append("<div id=\"XYB_Controls_DropDownHeaderPanelID\">");
strHtml.Append("<input type='checkbox' id='XYB_Controls_SelectAllItemCheckBox' /><label>全选</label>");
strHtml.Append("</div>");
strHtml.Append("<div id='XYB_Controls_DropDwonFooterPanelID'>");
strHtml.Append("<div id=\"XYB_Controls_DropDwonFooterLeftPanelID\">");
strHtml.Append("<input type=\"button\" id=\"XYB_Controls_btnSure\" value=\"确定\" />");
strHtml.Append("</div>");
strHtml.Append("<div id=\"XYB_Controls_DropDwonFooterRightPanelID\">");
strHtml.Append("<input type=\"button\" id=\"XYB_Controls_btnCancel\" value=\"取消\" />");
strHtml.Append("</div>");
strHtml.Append("</div>");
#endregion pnlDropDown.Controls.Add(new LiteralControl(strHtml.ToString()));
pnlDropDown.RenderControl(writer);//把下拉框呈现到网页上
}
}
}
  • 总结

  1.获取.css资源文件

  this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "XYB.Controls.CSS.dropDwon.css");

  2.获取并注册.js资源文件

  this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "XYB.Controls.JS.dropDwon.js");

  3.获取图片资源文件

  this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "XYB.Controls.Image.police.jpg");

   必须在 AssemblyInfo.cs文件中声明嵌入资源,并把生成操作设置为嵌入资源

[assembly: System.Web.UI.WebResource("XYB.Controls.CSS.dropDwon.css", "text/css")]//样式表
[assembly: System.Web.UI.WebResource("XYB.Controls.JS.dropDwon.js", "text/javascript")]//js
[assembly: System.Web.UI.WebResource("XYB.Controls.Image.police.jpg", "image/jpg")]//图片
  • 下集预告

  添加自定义事件,实现OnClick事件,原来微软的TextBox不带有Click事件的,我们来扩展这个事件

  

最新文章

  1. vim总结
  2. poj 2311 Cutting Game 博弈论
  3. STL六大组件之——算法小小小小的解析
  4. flask中的session对象方法
  5. Javascript如何判断一个变量是数字类型?
  6. 使用urllib2的HttpResponse导致内存不回收(内存泄漏)
  7. Java [Leetcode 226]Invert Binary Tree
  8. ExecuteNonQuery返回负数
  9. 如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
  10. 自学Aruba2.3-Aruba Web UI --Configuration面板介绍
  11. linux及windows文件共享
  12. Studio 5000编程:一种累计时间的编程方法
  13. C#中的反射 Reflection
  14. window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
  15. SqlServr分页存储过程的写法
  16. jProfiler远程连接Linux监控jvm的运行状态
  17. Codeforces 766D Mahmoud and a Dictionary 2017-02-21 14:03 107人阅读 评论(0) 收藏
  18. 【Pthon入门学习】99乘法表
  19. (效果四)jst如何判断对象是否为空?
  20. python开发面向对象进阶:反射&amp;内置函数

热门文章

  1. 【MFC】可以换行的编辑框
  2. 微软AI发布会,集齐六大亮点召唤黑科技!
  3. 阻止Bootstrap 模态框(Modal)点击空白处时关闭
  4. 正则表达式---01 js篇
  5. C#环形缓冲区(队列)完全实现
  6. 一次对真实网站的SQL注入———SQLmap使用
  7. java核心技术 要点笔记2
  8. Angular4中常用管道
  9. fold - 折叠输入行, 使其适合指定的宽度
  10. Luogu [P1248] 加工生产调度