怎么实现:    点到textbox跳出calendar控件,选定一个日期到textbox里 然后 calendar控件自动隐藏起来.

解决方案 »

  1.   

    后台代码如下:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Calendar1.Visible = false; //初始日历对象不可看
            }
        }
        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {        Calendar1.Visible = true; //文字改变的时候日历出现
            
        }    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            TextBox1.Text = Calendar1.SelectedDate.ToShortDateString(); //设置TextBox属性为日历日期
            Calendar1.Visible = false; //日历不可见
        }
    刚才运行了一下,输入文字的时候要按回车才能显示日历
    请大家帮忙解决一下,在线等,呵呵
      

  2.   

    <form id="form1" runat="server">
            <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
            </cc1:ToolkitScriptManager>       
          <asp:contentplaceholder id="con" runat="server">     
          
             </asp:contentplaceholder>
            &nbsp;
        <div>
                <br />
                Input Date:
                <asp:TextBox ID="MyTextBox" runat="server" Width="538px"></asp:TextBox>
                <br />
                <asp:Panel ID="Panel1" runat="server" CssClass="popupControl">
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            &nbsp;<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged" BackColor="#FFFFCC" BorderColor="#FFCC66" BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="#663399" Height="200px" ShowGridLines="True" Width="220px">
                                <SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
                                <TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
                                <SelectorStyle BackColor="#FFCC66" />
                                <OtherMonthDayStyle ForeColor="#CC9966" />
                                <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
                                <DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />
                                <TitleStyle BackColor="#990000" Font-Bold="True" Font-Size="9pt" ForeColor="#FFFFCC" />
                            </asp:Calendar>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </asp:Panel> 
                <br />
            <cc1:PopupControlExtender  ID="PopupControlExtender1" runat="server" CommitProperty="value"
                    PopupControlID="Panel1"
                    Position="Bottom" TargetControlID="MyTextBox">
            </cc1:PopupControlExtender>
            </div>       
        </form>
     
          protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            this.PopupControlExtender1.Commit(this.Calendar1.SelectedDate.ToString());
        }
      

  3.   

    我在TextBox中增加了AutoPostBack="true" 可还是要按回车才能显现日历,
    请问应该怎么办才能在输入文字或空格什么的时候就出现日历呢
      

  4.   

    AutoPostBack="true" 的话会在焦点移出TextBox递交表单.你可以自己写javascript来递交表单.
      

  5.   

    我的代码用了asp.net ajax
    http://www.asp.net/ajax/
      

  6.   

    this.Page.ClientScript.RegisterClientSciptBlock(this.GetType(),"abc",
      yourTextBox.ClientID+".onkeydown='if(this.value=='')"+
      this.Page.GetPostBackEventReference(yourTextBox),
      true);这会让文本控件在内容为空白并开始输入内容时回发触发它的click后台事件。可惜我早已不再开发asp.net程序了。看到csdn的asp.net栏目显示asp.net知识如此比较可惜。你应该去自己研究GetPostBackEventReference背后的理论知识,我不讲解了。
      

  7.   

    嗯,由于输出的文字本来就在单引号里,需要对单引号进行转义,也就是写this.Page.ClientScript.RegisterClientSciptBlock(this.GetType(),"abc", 
      yourTextBox.ClientID+".onkeydown='if(this.value=='')"+ 
      this.Page.GetPostBackEventReference(yourTextBox).Replace("'","//'"), 
      true); 
      

  8.   

    可不可以用MouseClick事件
    private void textBox1_MouseClick(object sender, MouseEventArgs e)
            {
                this.monthCalendar1.Visible = true;
            }
    而不用TextChange事件。
      

  9.   

    calendar控件在开发过程中一般很少用到,用得最多的是 写个javascript 比喻梅花雪之类