atlas改为asp.net ajax后,有些看不太懂了,想实现一个想要的效果如下:实现样式:时间:[TextBox]
[Label]想要的效果:点一下[TextBox]后,出现一个时间Calendar,在里面选择一个时间后,自动写到[TextBox]中,重要:同时[Label]显示这个[TextBox]当前值。程序很简单,如下:<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
<div>
时间:<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox_ValueChanged" AutoPostBack="true"></asp:TextBox><ajaxToolkit:PopupControlExtender ID="PopupControlExtender1" runat="server"  TargetControlID="TextBox1" PopupControlID="Panel1" Position="Right"></ajaxToolkit:PopupControlExtender><br /><asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>            <asp:Calendar ID="Calendar1" runat="server" BackColor="White" BorderColor="White"
                BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt" ForeColor="Black" Height="190px"
                NextPrevFormat="FullMonth" Width="350px" OnSelectionChanged="Calendar1_SelectionChanged">
                <SelectedDayStyle BackColor="#333399" ForeColor="White" />
                <TodayDayStyle BackColor="#CCCCCC" />
                <OtherMonthDayStyle ForeColor="#999999" />
                <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333" VerticalAlign="Bottom" />
                <DayHeaderStyle Font-Bold="True" Font-Size="8pt" />
                <TitleStyle BackColor="White" BorderColor="Black" BorderWidth="4px" Font-Bold="True"
                    Font-Size="12pt" ForeColor="#333399" />
            </asp:Calendar>
                        </ContentTemplate>                   </asp:UpdatePanel>
 </asp:Panel>
            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                    <asp:Label ID="Label1" runat="server" Text="[查看日期选择]"></asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>后台代码如下:
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        PopupControlExtender1.Commit(Calendar1.SelectedDate.ToShortDateString());
    }
    protected void TextBox_ValueChanged(object sender, EventArgs e)
    {
        Label1.Text = TextBox1.Text;
    }可是运行起来时,Label中的日期显示总是滞后一次,比如第一次我点1号,Label中没变化,第二次点2号,Lable 显示是1号,第三次点3号,Label显示是2号。经不断测试发现,这个办法时,由日历选中传递给TextBox时,TextBox值暂时无变化,要想让TextBox即时传递,用UpdatePanel还不行,那样的话PopupControlExtender又不让,请问各位大侠,什么问题呀,如何才能解决,谢谢

解决方案 »

  1.   

    <script type="text/xml-script">
            <page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
                <references>
                </references>
                <components>
                <textBox id="valueTextBox">            </textBox>
             <label id="valueLable">
                <bindings>
                <binding dataContext="valueTextBox" dataPath="text" property="text"  direction="inOut"/>
                </bindings>
                </label>
             </components>
            </page>
        </script>