Jquery日历在GridView被填充后不会重新加载
本文关键字:新加载 加载 日历 GridView 填充 Jquery | 更新日期: 2023-09-27 18:12:53
我有一个简单的页面,Jquery datepicker
, UpdateProgress
和GridView
在UpdatePanel
里面。
这是该页的一个片段:
...
Select From Date: <input type="text" id="datepickerfrom" name="datepickerfrom"/>
Select To Date: <input type="text" id="datepickerto" name="datepickerto"/>
<asp:Button ID="btnGetData" runat="server" OnClick="BtnGetData_Click" Text="Get Error List" />
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/ajax-loader.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
...MyGrid...
</ContentTemplate>
</asp:UpdatePanel>
...
这是点击按钮时调用的code behind
方法:
protected void BtnGetData_Click(object sender, EventArgs e)
{
string dateFrom = HttpUtility.HtmlEncode(Request.Form["datepickerfrom"]);
string dateTo = HttpUtility.HtmlEncode(Request.Form["datepickerto"]);
InputData data = new InputData(dateFrom, dateTo);
Session["inputData"] = data;
gvErrorLog.PageIndex = 0;
LoadLogErrorData(data);
}
当我第一次加载页面并点击其中一个日期文本框时,jQuery datepicker
弹出。当我刷新页面时,它也会弹出。
但是,在点击按钮并将数据填充到GridView
之后,它不再显示。
原因是什么?
你的标签是
<input type="text" id="datepickerfrom" name="datepickerfrom"/>
这实际上是一个普通的html标签。微软的ASP。. NET不保留常规html标签的状态(即ViewState)。回发后,页面生命周期在将响应以html形式发送回浏览器之前,有效地创建了page (System.Web.UI.Page)对象的新实例。
另一方面,一旦你改成<asp:TextBox ID="datepickerfrom" runat="server" />
您将在回发中看到它。另外,在后面的代码中捕获这两个日期的方式已经过时了(只在ASP 1.1中看到)。
文本标记的名称空间为system . web . ui . webcontrols . htmlinputtext和server标签的命名空间是System.Web.UI.WebControls.TextBox。它们属于不同的命名空间。HtmlControls中的任何控件都是用于遗留目的的。
您可以更改为asp:TextBox并从后面的代码中访问它们,如下所示:
protected void BtnGetData_Click(object sender, EventArgs e)
{
string dateFrom = datepickerfrom.Text; // -- updated
string dateTo = datepickerto.Text; // -- updated
InputData data = new InputData(dateFrom, dateTo);
Session["inputData"] = data;
gvErrorLog.PageIndex = 0;
LoadLogErrorData(data);
}
如果你坚持你的标签,你可以添加一个隐藏变量,并在你的文本框的变化事件更新这些隐藏变量
我假设你的文本框设置如下
$(function () {
$("#<%=datepickerfrom.ClientID%>").datepicker();
$("#<%=datepickerto.ClientID%>").datepicker();
});
我终于找到了问题的答案:
http://www.jquerybyexample.net/2010/08/jquery-datepicker-does-not-work-after.html