在calendar中点击时间后,页面就会刷新,很不好,什么办法可以避免这个问题!去掉runat=server,好像不可以。或者尤其他好的控件可推荐否,就像DTimer之类的咚咚

解决方案 »

  1.   

    我是这样处理
    在文本框旁边放一个按钮
    点击按钮,打开一个新的页面,在新页面中选择日期
    然后把选择的日期回传到文本框如果你需要我的代码,请和我联系
    [email protected]
      

  2.   

    你可以在calendar在客户端生成后用javascript给每个日期加上客户端的操作代码来实现你想要的功能:
    <asp:Calendar id="Calendar1" style="Z-INDEX: 101; LEFT: 288px; POSITION: absolute; TOP: 168px" runat="server"></asp:Calendar></FONT>
    <input type="hidden" id="hid3" runat=server>
    <INPUT type="hidden" id="hid2" runat=server>
    <input type="hidden" id="hid1" runat="server">
    <script language="javascript">
      //取得该页面中所有的超链接的数组
      var e = document.links;
      for(var i=0;i<e.length;i++)
      {
        如果是日期的链接
        if(e[i].innerText >= 1 && e[i].innerText <= 31)
        {
          //添加onclick事件,以链接到需要的页面
          e[i].onclick = function test(){ document.Form1.hid3.value = this.innerText + "/" + document.Form1.hid2.value + "/" + document.Form1.hid1.value;  return false;};
        }
      }
    </script>后台代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // hid1和hid2为两个设置成runat=server的hidden,看上面的html就能知道
             //这样的目的是每次月份改变后就会重新设定年、月这两个值
    hid1.Value = Calendar1.SelectedDate.Year.ToString();
    hid2.Value = Calendar1.SelectedDate.Month.ToString();
    }
    注意几点:
    1.
    这段脚本一定要写在calendar控件后面,否则无法找到对应的日期超链接。2.
    这里定义了两个hidden用来放置当前年份和月份,因为你的日期链接不会再进行postback动作
    所以你无法通过服务器端代码进行日期的取得,必须事先将年份和日期存在hidden中备用。
    年存储在hid1中,月存储在hid2中,最后取得的值存在hid3中。3.
    Calendar的SelectDate属性必须设置,否则在服务器端取到的年和月是错误的。4.Calendar的上个月和下个月的日期必须不显示,否则日期会错误,我记得好像有这个属性,你找找看。这样做不是很方便,你可以到网上找找用Javascript写的日历,比较方便。
      

  3.   

    微软的 calendar 控件是有点不好用!用其他的方法或控件吧!
      

  4.   

    我将它设为不可选,然后为每天加了一个复选框,这样来实现多选。
    之前还通过在session里面保存selecteddatecollection来实现多选,这个会自动提交。上面说的那个方法不会自动提交,要用一个按钮来提交。但是我现在在研究提交时如何遍历每个复选款,呵呵。
      

  5.   

    干吗这么麻烦?你担心的是刷新整个网页,并不担心只刷这个控件
    把控件放到IFRAME里就OK了
      

  6.   

    不需要,一个是放到Ifram中,另外就是用JAVASCRIP写的日期控件
      

  7.   

    这个帖子还没结呢啊我自己做了一个用户控件,可多选日期的:http://blog.csdn.net/sizheng0320/archive/2004/09/20/111114.aspx
      

  8.   

    还是用梅花雨的日历控件吧,用 javascript 写的,很好用!其下载地址为:http://www.dev-club.com/club/bbs/showAnnounce.asp?page=1&id=2259248
      

  9.   

    建议用梅花雨js日历控件。由于是js的,所以不会有刷新问题存在。非常好用。