如何使用iframe实现calendar动态显示,

来源:互联网 发布:finale软件最新 编辑:程序博客网 时间:2024/05/01 23:19

基础知识介绍:
        iframe:可以让你在一个页面中嵌套调用别的事件。
        Calendar控件:微软自己制定的服务器端控件,用起来相当方便。
        DropDownList控件:html显示的代码为(input type=”select”),这个控件比较奇怪,M$把它定义在页面的最顶层,也就是无论你如何修改其他控件Z-INDEX,你都没有办法遮住它。

       主页面 HTML


<script language="javascript">
     function setDate(strDate)
        { mainForm.txtDatetime.value = strDate; }
</script>
<body>
    <form id="mainForm" method="post" runat="server">
         <table>
            <tr> 
                <td><asp:Button ID="btnShow" Runat="server" Text="Show Calendar"></asp:Button></td>
            </tr>
            <tr>
                <td> <asp:DropDownList ID="dplSample" Runat="server">
                                <asp:ListItem>Wanna cover me?</asp:ListItem> 
                          </asp:DropDownList>
                </td>
            </tr>
            <tr>
                 <td><asp:TextBox ID="txtDatetime" Runat="server" AutoPostBack="True"></asp:TextBox></td>
             </tr> 
             <tr>
                 <td> <iframe id="frmCalendar" runat="server" src="WebCalendar.aspx" height="163" width="134" marginheight="0" marginwidth="0"> </iframe> </td>
             </tr>
          </table>
        </form>
 </body>


        主页面 cs

private void Page_Load(object sender, System.EventArgs e)
{
    if( !this.IsPostBack )
     {
        frmCalendar.Visible = false;
     } 
}
private void btnShow_Click(object sender, System.EventArgs e)
{
    if( this.frmCalendar.Visible )
    {
        this.frmCalendar.Visible = false; 
    }
    else
    {
        this.frmCalendar.Visible = true;
        this.frmCalendar.Style.Add("position", "absolute");
        this.frmCalendar.Style.Add("top", "43");
        this.frmCalendar.Style.Add("left", "12");
    }
}
 

        子页面 html 

<body>
     <form id="calenderFrom" method="post" runat="server">
         <asp:calendar id="calDate" runat="server" Font-Names="Arial" Font-Size="8pt" Height="100px" ForeColor="Black" BorderStyle="Solid" FirstDayOfWeek="Sunday"             BackColor="White" BorderColor="Black" CellSpacing="1">
             <TodayDayStyle ForeColor="White" BackColor="Navy"></TodayDayStyle>
             <DayStyle BackColor="#CCCCCC"></DayStyle> 
             <NextPrevStyle Font-Size="8pt" Font-Bold="True" ForeColor="White"></NextPrevStyle>
             <DayHeaderStyle Font-Size="8pt" Font-Bold="True" Height="8pt" ForeColor="#333333"></DayHeaderStyle>
             <SelectedDayStyle ForeColor="White" BackColor="Navy"></SelectedDayStyle>
             <TitleStyle Font-Size="9pt" Font-Names="Arial" Font-Bold="True" Height="12pt" ForeColor="White" BackColor="#333399"></TitleStyle>
             <WeekendDayStyle BackColor="DarkGray"></WeekendDayStyle> 
             <OtherMonthDayStyle ForeColor="#999999"></OtherMonthDayStyle>
        </asp:calendar>
    </form>
 </body> 

       子页面 cs


private void Page_Load(object sender, System.EventArgs e) 
{
    if(!this.IsPostBack)
   {
        // 取得当前线程中的地区设定(原对象为只读)
        CultureInfo ciNew = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
        // 改变日历的设定
        ciNew.DateTimeFormat.AbbreviatedDayNames = new string[]{"日","一","二","三","四","五","六"};
        // 重新对地区设定赋值
        Thread.CurrentThread.CurrentCulture = ciNew;
     }
}

private void calDate_SelectionChanged(object sender, System.EventArgs e)
{
    this.Response.Write("<script>parent.setDate('"+this.calDate.SelectedDate.ToString()+"');</script>");
    string doPostback = @" <script>parent.__doPostBack('btnShow','');</script> ";
    this.Response.Write(doPostback);
}