我在updatepanel中有一个asp.net gridview。 我在其中的一个字段是一个简单的文本框,如下所示:
<asp:TextBox ID="txtDueDate" Text='<%# Eval("DueDate") %>' Width="75px" runat="server" ToolTip="Select the due date." CssClass="datePickerDueDate"></asp:TextBox>
我想点击这个文本框时出现jquery ui datepicker,我试过了:
$(".datePickerDueDate").datepicker({
});
在Chrome开发者工具中,此文本框的ID显示为:id="MainContent_gvLineItems_txtDueDate_0"
处理这个问题的最佳方法是什么?我当前的问题是日历没有出现,除非我打开开发人员工具并直接在控制台窗口中输入并点击回车。
我可以用这个解决它:
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "setDueDate", "$(function(){$('.datePickerDueDate').datepicker('option' 'firstDay', 1);});", true);
在代码背后,但这看起来很难看......有更好的方法吗?
答案 0 :(得分:1)
考虑到您在updatepanel中有数据,当更新面板执行部分回发时,可能不会触发文档就绪事件。
我想你的导致你的gridview进入编辑模式,然后出现你的文本框。
jQuery $(document).ready and UpdatePanels?
该问题包含我之前使用的解决方案。
但基本上这意味着您订阅了updatepanels endrequest,然后将.datepicker重新绑定到文本框。
答案 1 :(得分:0)
确保将datepicker函数绑定到文档ready
$(function(){
$(".datePickerDueDate" ).datepicker();
});
由于您的jQuery选择器基于Css类名称,因此您无需担心为输入元素生成的ID。只要元素的类名是datePickerDueDate
,它就可以工作
还要确保将2个库加载到您的页面。 jQuery 和 jQuery UI