实际上我在页面上有多个更新面板,它们更新了服务器上的不同值,但问题是我有一个文本框,我在load事件上为datepicker附加了javascript类。
但是在那个日期TextBox之前还有其他更新面板,当我更新它们时,第一个带有日期控件的日历图像在updatepanel中消失。或者它删除文本框旁边的日历。
txtDate.Attributes.Add("class", "show-week w16em dateformat-d-sl-m-sl-Y");
在使用任何更新面板之前,就像这样
在我们更新任何updatepanel控件后,就像这样。
但是任何更新面板中没有的日期控件都可以正常工作。
在这些更新面板中,我实际上在DataTables中保存了值,并将这些DataTable保存在viewState中....没有HTML的变化。
答案 0 :(得分:2)
我想datepicker及其文本框都放在updatepanel中?
如果您使用UpdatePanels执行ajax-postback,服务器将为页面上的所有UpdatePanel发回html,并刷新其所有内容,因此您的日期选择器将消失。
如果在UpdatePanels上设置UpdateMode=Conditional
,则只会更新导致回发的UpdatePanel。
另一种选择是使用ScriptManager.RegisterStartupScript重新创建日期选择器,但这可能会重置其值(取决于它的日期选择器)。
答案 1 :(得分:1)
您是否正在更改存在TextBox的DIV或TABLE的INNERHTML,因为如果您正在更新DIV或TABLE之后删除日历控件。
答案 2 :(得分:1)
无论您使用哪种方法来附加日期选择器,都必须在updatepanel更新后再次调用
您可以使用this在服务器端执行此操作:
// at some point of the method that updates the panel
ScriptManager.RegisterStartupScript(
this, typeof(object), "someUniqueKey", "theScript();", true);
或在客户端使用此:
// <body onload='...'> or in the <head>
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function () { theScript() });