做了一个Calendar.ascx(参考自CodeProjects)
思路: 一个TextBox 一个asp:Calendar(一开始隐藏,浮动,放在一个Div里面)
结果: 点TextBox或者图标,出现Calendar ,选完时间写到TextBox或者点关闭图标就关闭
问题: 转换月份的时候,Calendar就消失
完整代码:
1.Calendar.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HexieCalendar.ascx.cs" Inherits="UserControl_HexieCalendar" %>
<!--这个函数是实现哪个Calendar显示或隐藏-->
<script type="text/javascript" language="javascript">function <%= this.ClientName %>_SetDisplay(doDisplay)
{
if(doDisplay == true)
{
document.getElementById('<%= this.ClientName %>').style.display='block';
}
else
{
document.getElementById('<%= this.ClientName %>').style.display='none';
}
}</script>
<table><tr>
<td valign="top" align="left" nowrap onclick="javascript:<%= this.ClientName %>_SetDisplay(true);">
<asp:TextBox ID="txtDate" runat="server" MaxLength="10" OnTextChanged="txtDate_TextChanged" Width="100px" ></asp:TextBox>
<asp:Image ID="imgDisplayCalendar" runat="server" ImageUrl="~/images/calendar/calendar.jpg" />
</td>
</tr></table><div id="<%= this.ClientName %>" style=" position:absolute; display:none" >
<table style="background-repeat:no-repeat; font-size:10pt" cellpadding="1" cellspacing="0">
<tr>
<td align="right" valign="top" style=" height:14px; font-size:10px; font-weight:bold; font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; background-color:#CCCCCC; ">和谐日历控件
<a href="#" onclick="<%= this.ClientName %>_SetDisplay(false);">
<img id="imgX" alt="" style="border:0; top:0px" src="../images/calendar/x.gif"/></a>
</td>
</tr>
<tr >
<td >
<asp:Calendar ID="calDate" runat="server"
OnSelectionChanged="calDate_SelectionChanged" >
</asp:Calendar>
</td>
</tr>
</table>
</div>2.Calendar.ascx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class UserControl_HexieCalendar : System.Web.UI.UserControl
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
public string ClientName //得到自定义名字
{
get { return this.ClientID + "_Selectable"; }
} protected void txtDate_TextChanged(Object sender, EventArgs e)
{
}
protected void calDate_SelectionChanged(Object sender, EventArgs e)//把时间写到TextBox
{
txtDate.Text = calDate.SelectedDate.ToShortDateString();
}
}
思路: 一个TextBox 一个asp:Calendar(一开始隐藏,浮动,放在一个Div里面)
结果: 点TextBox或者图标,出现Calendar ,选完时间写到TextBox或者点关闭图标就关闭
问题: 转换月份的时候,Calendar就消失
完整代码:
1.Calendar.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HexieCalendar.ascx.cs" Inherits="UserControl_HexieCalendar" %>
<!--这个函数是实现哪个Calendar显示或隐藏-->
<script type="text/javascript" language="javascript">function <%= this.ClientName %>_SetDisplay(doDisplay)
{
if(doDisplay == true)
{
document.getElementById('<%= this.ClientName %>').style.display='block';
}
else
{
document.getElementById('<%= this.ClientName %>').style.display='none';
}
}</script>
<table><tr>
<td valign="top" align="left" nowrap onclick="javascript:<%= this.ClientName %>_SetDisplay(true);">
<asp:TextBox ID="txtDate" runat="server" MaxLength="10" OnTextChanged="txtDate_TextChanged" Width="100px" ></asp:TextBox>
<asp:Image ID="imgDisplayCalendar" runat="server" ImageUrl="~/images/calendar/calendar.jpg" />
</td>
</tr></table><div id="<%= this.ClientName %>" style=" position:absolute; display:none" >
<table style="background-repeat:no-repeat; font-size:10pt" cellpadding="1" cellspacing="0">
<tr>
<td align="right" valign="top" style=" height:14px; font-size:10px; font-weight:bold; font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; background-color:#CCCCCC; ">和谐日历控件
<a href="#" onclick="<%= this.ClientName %>_SetDisplay(false);">
<img id="imgX" alt="" style="border:0; top:0px" src="../images/calendar/x.gif"/></a>
</td>
</tr>
<tr >
<td >
<asp:Calendar ID="calDate" runat="server"
OnSelectionChanged="calDate_SelectionChanged" >
</asp:Calendar>
</td>
</tr>
</table>
</div>2.Calendar.ascx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class UserControl_HexieCalendar : System.Web.UI.UserControl
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
public string ClientName //得到自定义名字
{
get { return this.ClientID + "_Selectable"; }
} protected void txtDate_TextChanged(Object sender, EventArgs e)
{
}
protected void calDate_SelectionChanged(Object sender, EventArgs e)//把时间写到TextBox
{
txtDate.Text = calDate.SelectedDate.ToShortDateString();
}
}
解决方案 »
- EF 4中如何生成ObjectContext
- 提个小问题,顺便散点分,来者都有。。。
- 高手帮忙,GridView分页显示第2页问题
- 发布网站出现错误:vti_encoding:SR|utf8-nl,有谁明白,急死人了。
- oOracleConn.Open();语句出错!
- 请教一个兼容性问题
- 斑竹和各位战友近来看五一了公司都发红包了建议CSDN也发个红包!送给每个人点分!毕竟大家都忙活一年了!支持的帮我顶
- 有一CheckBoxList,怎么分别设置每一项为不同的enabled属性
- 急!!!!!asp.net
- 在asp.net中datagrid控件几点问题?(强烈要求微软专家出来解答)
- 关于验证控件的使用,如何验证文本框里的数据,开头必须是数字9,输入的数值长度不能大于5,并且全部为数字,并且不能为空
- 开发办公管理查询系统思路是什么?
转换成自己的格式,不要默认进行转换,有‘可能不同的地方会出现不同的结果
问题是那个月份换的时候 Calendar 关闭了
有方法吗?
有那个月份转换那个 就是前一个月 后一个月 那个
只要点那个 Div就隐藏了 但我看不出来为什么?
calDate.Visible=false;
它初始化就是隐藏的
然后点击就打开了 然后换月份 回传
所以又隐藏了 我认为是这样的!
有没有什么办法解决?
OnSelectionChanged="calDate_SelectionChanged" OnVisibleMonthChanged="calDate_VisibleMonthChanged" >
</asp:Calendar>
protected void calDate_VisibleMonthChanged( object sender, MonthChangedEventArgs e )
{
Page.RegisterStartupScript("a", "<script>document.getElementById('" + this.ClientName + "').style.display='block'; </script>");
}
有2个样式控制
StyleSheet.css Calendar.skin(放在工程内的一个文件夹里)
请问怎么调用,能实现对控件的控制!
cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class UserControl_HexieCalendar : System.Web.UI.UserControl
{
string _DateValue; public string DateValue
{
get
{
return txtDate.Text;
}
//set
//{
// _DateValue = value;
//}
} public TextBox theTextBox
{
get
{
return txtDate;
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string strKey = System.DateTime.Now.ToString();
for (int i = 0; i < 10000; i++)
{
if (!this.Page.IsClientScriptBlockRegistered(strKey + i.ToString()))
{
break;
}
}
Page.RegisterStartupScript(strKey, string.Format("<script language='javascript'>{0}_SetDisplay(false)</script>", this.ClientName));
} Page.RegisterStartupScript("st'rKey", string.Format("<script language='javascript'>window.alert({0})</script>", this.txtDate.Text));
}
public string ClientName //得到自定义名字
{
get { return this.ClientID + "_Selectable"; }
} protected void txtDate_TextChanged(Object sender, EventArgs e)
{ } protected void calDate_SelectionChanged(Object sender, EventArgs e)//把时间写到TextBox
{
txtDate.Text = calDate.SelectedDate.ToString("yyyy-MM-dd");
_DateValue = calDate.SelectedDate.ToString("yyyy-MM-dd");
string strKey = System.DateTime.Now.ToString();
for ( int i = 0; i < 10000; i++)
{
if (!this.Page.IsClientScriptBlockRegistered(strKey + i.ToString()))
{
break;
}
}
Page.RegisterStartupScript(strKey, string.Format("<script language='javascript'>{0}_SetDisplay(false)</script>", this.ClientName));
}
protected void calDate_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
string strKey = System.DateTime.Now.ToString();
for (int i = 0; i < 10000; i++)
{
if (!this.Page.IsClientScriptBlockRegistered(strKey + i.ToString()))
{
break;
}
}
Page.RegisterStartupScript(strKey, string.Format("<script language='javascript'>{0}_SetDisplay(true)</script>", this.ClientName));
}
}ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HexieCalendar.ascx.cs" Inherits="UserControl_HexieCalendar" %>
<!--
决定是隐藏还是显示某Calendar
另外建一个iframe使其大小跟Div完全相同从而能够覆盖select
因为div比一般object的渲染度高,所以可以覆盖其他,但是select比div高,
所以无法覆盖select html控件,于是就用一个更牛的控件iframe去覆盖select
-->
<script type="text/javascript" language="javascript">function <%= this.ClientName %>_SetDisplay(doDisplay)
{
if(doDisplay == true)
{
document.getElementById('<%= this.ClientName %>').style.display='block';
document.getElementById('<%= this.ClientName %>_overShelf').style.display = 'block';
}
else
{
document.getElementById('<%= this.ClientName %>').style.display='none';
document.getElementById('<%= this.ClientName %>_overShelf').style.display = 'none';
}
document.getElementById('<%= this.ClientName %>_overShelf').style.width = document.getElementById('<%= this.ClientName %>').offsetWidth;
document.getElementById('<%= this.ClientName %>_overShelf').style.height = document.getElementById('<%= this.ClientName %>').offsetHeight;
document.getElementById('<%= this.ClientName %>_overShelf').style.top = document.getElementById('<%= this.ClientName %>').offsetTop;
document.getElementById('<%= this.ClientName %>_overShelf').style.left = document.getElementById('<%= this.ClientName %>').offsetLeft;
document.getElementById('<%= this.ClientName %>_overShelf').style.x = document.getElementById('<%= this.ClientName %>').offsetTop;
document.getElementById('<%= this.ClientName %>_overShelf').style.left = document.getElementById('<%= this.ClientName %>').offsetLeft;
document.getElementById('<%= this.ClientName %>').style.zIndex = 99999;
document.getElementById('<%= this.ClientName %>_overShelf').style.zIndex = 99999;
}
</script><iframe id="<%= this.ClientName %>_overShelf" scrolling="no" frameborder="0"
style="position:absolute; top:0px; left:0px; display:none;"></iframe><link href="~style/App_Themes/CalendarTheme/StyleSheet.css" type="text/css" rel="stylesheet"/> <table>
<tr>
<td valign="top" align="left" nowrap onclick="javascript:<%= this.ClientName %>_SetDisplay(true);">
<asp:TextBox ID="txtDate" runat="server" MaxLength="10" OnTextChanged="txtDate_TextChanged" Width="100px" ></asp:TextBox>
<asp:Image ID="imgDisplayCalendar" runat="server" ImageUrl="~/images/calendar/calendar.jpg" />
</td>
</tr>
</table><div id="<%= this.ClientName %>" style=" position:absolute; display:none" >
<table style="background-repeat:no-repeat; font-size:10pt" cellpadding="0" cellspacing="0">
<tr>
<td align="right" valign="top" style=" height:14px; font-size:10px; font-weight:bold; font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; background-color:#CCCCCC; ">SELECT DATE
<a href="#" onclick="<%= this.ClientName %>_SetDisplay(false);">
<img id="imgX" alt="" style="border:0; top:0px" src="../images/calendar/x.gif"/></a>
</td>
</tr>
<tr >
<td >
<asp:Calendar ID="calDate" runat="server"
OnSelectionChanged="calDate_SelectionChanged" OnVisibleMonthChanged="calDate_VisibleMonthChanged" >
</asp:Calendar>
</td>
</tr>
</table>
</div>
有机会把代码加到 我那无聊的blog上去 现在结贴