我正在嘗試使用Obout日曆控件實現日期範圍搜索功能。這個想法是,用戶可以從Obout日曆中選擇一個日期,然後在它旁邊填寫一個asp:TextBox。表格中還有其他字段,但這是一個突破。我在表單底部還有一個asp:Button,它的功能是清除表單中的所有字段。爲此,它會在後面的代碼與此:Obout日曆在UpdatePanel後異步回發
protected void btnClearFields_Click(object sender, EventArgs e)
{
txtFrom.Text = "";
txtTo.Text = "";
}
而且這裏是有關前端代碼:
<table>
<tr>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<td>
<asp:Label ID="lblFrom" runat="server" Text="From:"></asp:Label>
<br />
</td>
<td>
<asp:TextBox ID="txtFrom" runat="server"></asp:TextBox>
</td>
<td>
<obout:Calendar runat="server" ID="CalendarFrom" TextBoxId="txtFrom" StyleFolder="Calendar/styles/orbitz" ScriptPath="Calendar/calendarscript" DatePickerButtonText <IMG src='Images/calendar.gif' align=absMiddle border=0>" ShowYearSelector="true" DateMin="1/1/1900" AllowDeselect="false" DatePickerMode="true" />
</td>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<td>
<asp:Label ID="lblTo" runat="server" Text="To:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
</td>
<td>
<obout:Calendar runat="server" ID="CalendarTo" TextBoxId="txtTo" StyleFolder="Calendar/styles/orbitz" ScriptPath="Calendar/calendarscript" DatePickerButtonText <IMG src='Images/calendar.gif' align=absMiddle border=0>" ShowYearSelector="true" DateMin="1/1/1900" AllowDeselect="false" DatePickerMode="true" />
</td>
</ContentTemplate>
</asp:UpdatePanel>
</tr>
</table>
現在,我遇到的問題是,當我第一次加載該頁面,所有很好。我可以從日曆中選擇一個日期,並按預期填寫文本框。但是,如果我單擊導致部分回發的「Clear Fields」按鈕,則會出現問題。當我再次點擊日曆圖標時(在清除字段後),彈出的日期選擇器的格式會被搞亂。它的日曆部分只是一個紅色方塊,不能選擇任何日期。年份選擇欄橫跨整個屏幕,並且更改年份對日曆不起任何作用。
我在研究中找不到任何類似的問題,所以我不確定要嘗試什麼。我已經嘗試過在整個表格中只使用一個UpdatePanel,但後來我遇到了同樣的問題。我也嘗試在UpdatePanels中不包括日曆,它不會「中斷」日曆,但它會在我的網頁上放置兩個新的TextBox字段(它將接受來自日曆的任何新值)並且不會清除舊日曆。還試着把按鈕和包含日曆的表放在同一個UpdatePanel中,但是我也得到了同樣的紅色框。