【问题标题】:Date picker not working when dropdownlist index change下拉列表索引更改时日期选择器不起作用
【发布时间】:2013-10-25 05:13:16
【问题描述】:

我的更新面板中有一个下拉列表和文本框。即AuditName,审计日期。 AuditName 下拉列表具有从数据库中检索到的值。审核日期用于设置日期,这里使用 jquery datepicker。

问题是页面加载时日期选择器工作正常。但是当我从下拉日期选择器中选择值时不起作用(甚至不显示日期)。

当我先选择日期然后选择下拉菜单时,文本框的值是明确的。我不知道为什么会这样..

我的代码是,

<script>
     $(function () {
         $('#<%= txtAuditduedate.ClientID %>').datepicker(
             { minDate: 0, changeMonth: true, changeYear: true });
     });
</script>

<asp:UpdatePanel runat="server" ID="upnlAddschedule" UpdateMode="Conditional">
        <ContentTemplate>
            <table cellpadding="5" cellspacing="5" width="100%">                   
                <tr>
                    <td align="right">
                        <asp:Label runat="server" ID="lblAuditlist" Text="Audit Name:/>                            
                    </td>
                    <td align="left">
                        <asp:DropDownList runat="server" ID="ddauditlist" TabIndex="100" AppendDataBoundItems="true" Width="194px"                                AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
                        </asp:DropDownList>                            
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label runat="server" ID="lblDuedate" Text="Audit Due Date:"></asp:Label> 
                    </td>
                    <td align="left">
                        <asp:TextBox runat="server" ID="txtAuditduedate" Width="189px" Font-Bold="False" ReadOnly="true" TabIndex="101" />                            
                    </td>
                </tr>                    
            </table>
        </ContentTemplate>
    </asp:UpdatePanel>

这是我的下拉绑定代码,

public void FillDropDownList()
    {
        s = WebConfigurationManager.ConnectionStrings["Scon"].ConnectionString;
        con = new SqlConnection(s);
        con.Open();
        cmd = new SqlCommand("select AUDITNAME from MASTER ", con);
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            ddauditlist.Items.Add(new ListItem(dr["AUDITNAME"].ToString()));
        }            
        dr.Close();
        con.Close();
    }

【问题讨论】:

  • 显示您的回发代码..
  • 在您的下拉列表中设置 AutoPostBack="False" !或删除更新面板并再次检查
  • @RameshRajendran 我想他使用 UpdatePanel 是有原因的。这可能是因为日期将取决于下拉菜单。
  • 是的,现在我改变了我的答案!\

标签: javascript jquery asp.net


【解决方案1】:

尝试在每次更新 UpdatePanel 时绑定日期选择器。

<script>
     $(document).ready(function () {
         bindDatePicker();
         Sys.WebForms.PageRequestManager.getInstance().add_endRequest(bindDatePicker);
     });

     function bindDatePicker() {
         $('#<%= txtAuditduedate.ClientID %>').datepicker({
             minDate: 0,
             changeMonth: true,
             changeYear: true
         });
     }    
</script>

<!-- Add the ScriptManager if it doesn't already exist on your page -->
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

【讨论】:

  • 我已经更新了我的答案以在 $(document).ready 上加载日期选择器。
  • 你是对的,但是为什么你调用 bindDatePicker();上面 add_endRequest 中的方法?
  • @RameshRajendran 查看 Ram 的评论。我只是确保它绑定。
【解决方案2】:

在后面加上脚本,我就是这么做的。

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded( $(function () {
     $('#<%= txtAuditduedate.ClientID %>').datepicker(
         { minDate: 0, changeMonth: true, changeYear: true });
 }););
</script>

对不起,语法有问题,就像一把钥匙

查看此讨论:

Date picker is not working with update panel

查看此博客jQuery Datepicker does not work after Ajax Partial Postback

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多