控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

ASP.net中的AJAX如何动态加载Calendar控件

作者:佚名 出处:互联网 2010年04月21日 阅读:

控件中国网为客户提供大量Calendar控件。需要请点击:Calendar控件

本文主要是一个动态加载用户控件的实例,页面效果是当用户点击按钮时,出现日历控件(用户自定义控件,包括每个月的1日出现“发工资”的提示),对日历进行操作时,不影响整个页面(无刷新),当用户再次点击按钮时,用户控件卸载。以前我的一个日历的实例中也实现了这个效果,但是那时使用的是整体用户控件加载,并且不卸载功能,当用户点击按钮时,出现的日历出现和消失都是采用Visible方法,这无疑加重了页面的负担,今天学习到了这种方法,记录下来,供日后回顾。
  首先我们先来布置页面:

  1.在网站下添加新项用户控件,默认其页面名:WebUserControl.ascx

  2.在WebUserControl.ascx中添加一个日历控件,按照自己喜欢的样式改变其外观。

  这里我想说明两个Calendar控件的属性,让我们一起来重温Calendar控件,首先Calendar控件默认可以选择日期,可以使用SelectionMode属性修改这个选择操作,这个属性的值可以是Day(允许在日历中单击某个日期)、DayWeek(允许在日历中单击某个日期,同时可以单击星期旁边的箭头,选择整个星期)、DayWeekMonth(可以选择日期或星期,日历右上角的箭头允许选择整个月)、none(用户不能做任何操作)。接着:day属性的一个有用的功能是,可以把Day属性的IsSelectable设置为false,关闭选择某个日期或日期范围的选项。这个功能在实际开发中,可能会用到,代码如下:

  if(e.Day.Date<DateTime.Now)

  e.Day.IsSelectable=false;

  3.编写每个月1日时日历出现的“发工资”的提示,代码如下:

  日历提示功能代码

 

代码
1using System;
2using System.Collections;
3using System.Configuration;
4using System.Data;
5using System.Linq;
6using System.Web;
7using System.Web.Security;
8using System.Web.UI;
9using System.Web.UI.HtmlControls;
10using System.Web.UI.WebControls;
11using System.Web.UI.WebControls.WebParts;
12using System.Xml.Linq;
13
14public partial class WebUserControl : System.Web.UI.UserControl
15{
16  protected void Page_Load(object sender, EventArgs e)
17  {
18
19  }
20  //DayRender:日历中显示的每一天都会运行该方法。
21  protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
22  {
23    //单元格的垂直对齐方式为top
24    e.Cell.VerticalAlign = VerticalAlign.Top;
25    if (e.Day.DayNumberText == "1")
26    {
27      e.Cell.Controls.Add(new LiteralControl ("<p>发工资</p>"));
28      e.Cell.BorderColor = System.Drawing.Color.Black;
29      e.Cell.BorderWidth = 1;
30      e.Cell.BorderStyle = BorderStyle.Double;
31      e.Cell.BackColor = System.Drawing.Color.LightGray;
32    }
33  }
34}

 

4.新建一个AJAX窗口,命名为:DynamicLoadControl.aspx,在页面中放置一个Updatepanel1。

  5.在Updatepanel1中放入一个Button1,text=“…”(18行)。

  6. 在Updatepanel1中放入一个html的hidden控件,将其改为服务器控件,id改为:Dynamic_UserControl_Hidden1(17行)。

  页面布局介绍,下面我们来看一下DynamicLoadControl.aspx的客户端代

代码
<head runat="server">
  <title>无标题页</title>
  <script type="text/javascript"> 
   function pageLoad() {
   }
  
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
  
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
      <ContentTemplate>
        <input ID="Dynamic_UserControl_Hidden1" type="hidden" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="…" onclick="Button1_Click" />        
      </ContentTemplate>
      <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
      </Triggers>
</asp:UpdatePanel>
</div>
  </form>
</body>
</html>

 

 
 

下面是cs代码,

  动态加载用户控件代码

 

代码
1using System;
2using System.Collections;
3using System.Configuration;
4using System.Data;
5using System.Linq;
6using System.Web;
7using System.Web.Security;
8using System.Web.UI;
9using System.Web.UI.HtmlControls;
10using System.Web.UI.WebControls;
11using System.Web.UI.WebControls.WebParts;
12using System.Xml.Linq;
13
14public partial class DynamicLoadControl : System.Web.UI.Page
15{
16  protected void Page_Load(object sender, EventArgs e)
17  {
18   
19  }
20  //这个方法先于page_load之前执行,也在控件初始化前执行
21  protected void Page_Init(object sender, EventArgs e)
22  {
23    //从送来的参数中,判断用户控件是否已经加载,"Dynamic_UserControl_Hidden1"是个标志,
24    //为true时,代表用户控件存在,初次加载页面时,表示是false,故没有用户控件出现在网页上
25    if (Request.Params["Dynamic_UserControl_Hidden1"] == " true")
26      LoadDynamicUserControl();
27
28  }
29  //点击按钮出现用户自定义控件
30  protected void Button1_Click(object sender, EventArgs e)
31  {
32    //当用户自定义控件(标志为true)存在时,就移除到自定义控件,同时标志改为false。
33    if (Request.Params["Dynamic_UserControl_Hidden1"] == "true")
34    {
35      UpdatePanel1.ContentTemplateContainer.Controls.Remove(UpdatePanel1.ContentTemplateContainer.FindControl("WebUserControl1"));
36      HtmlInputHidden hidden = (HtmlInputHidden)UpdatePanel1.ContentTemplateContainer.FindControl("Dynamic_UserControl_Hidden1");
37      hidden.Value = "false";
38
39    }
40      //否则就加载用户自定义控件
41    else
42      LoadDynamicUserControl();
43  }
44  //加载用户自定义控件
45  private void LoadDynamicUserControl()
46  {
47    //当Updatepanel中没有用户控件时
48    if (UpdatePanel1.ContentTemplateContainer.FindControl("WebUserControl1") == null)
49    {
50      //根据指定的WebUserControl.ascx路径加载控件WebUserControl1
51      Control c = LoadControl("WebUserControl.ascx");
52      c.ID = "WebUserControl1";
53      //找到标志将其值改为true
54      HtmlInputHidden hidden =(HtmlInputHidden ) UpdatePanel1.ContentTemplateContainer.FindControl("Dynamic_UserControl_Hidden1");
55      hidden.Value = "true";
56      //在Updatepanel中加入用户控件
57      UpdatePanel1.ContentTemplateContainer.Controls.Add(c);   
58    }
59  }
60  
61}

控件中国网为客户提供大量Calendar控件。需要请点击:Calendar控件
 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统