我在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
后,它将不再显示。
可能是什么原因?
答案 0 :(得分:0)
您的代码是
<input type="text" id="datepickerfrom" name="datepickerfrom"/>
这实际上是常规的html标记。 Microsoft ASP.NET不保持常规html标记的状态(即在ViewState中)。回发后,页面生命周期有效地创建了一个新的Page(System.Web.UI.Page)对象实例,然后将响应作为html发送回浏览器。
另一方面,一旦你改为
<asp:TextBox ID="datepickerfrom" runat="server" />
你会在回发中看到它。你在后面的代码中捕获这两个日期的方式已经过时(仅在ASP 1.1中看到)。
文本标签的命名空间是 System.Web.UI.HtmlControls.HtmlInputText和服务器标记的名称空间是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();
});
答案 1 :(得分:0)