0

对于我的网络应用程序,我尝试使用 AsyncPostBackTrigger(因为我不希望页面自动回发)根据客户端单击日历扩展器(我在代码隐藏 vb.net 中声明以从数据库加载它)来填充下拉列表(DDL) . 我有按钮来触发选定的日期,它确实可以填充 DDL,但不是我想要的方式。它不是在现有的 DDL 中更新它,而是在现有的 DDL 之外创建一个新的 DDL。我试图寻找解决方案,但没有找到任何解决方案。任何人都可以帮我弄清楚为什么会发生这种情况以及如何解决这个问题?

这是我的 asp.net 和 javascript 代码


<asp:Label ID="label16" runat = "server" Text="Select the date"></asp:Label></td>
                                            <td id="Td29" style="width:290px;" runat="server">
                                            <asp:TextBox ID="tbPostingDt" runat="server" style ="width:174px;"></asp:TextBox>
                                            <asp:Button ID="ClickBtn" runat="server" Text="Click"  style="display:none" OnClick="ClickBtn_Click" />
                                                <asp:ImageButton ID="CalendarBtnPostingDt" runat="server" ImageUrl="~/Images/Calendar_scheduleHS.png" AlternateText="Click to display calendar"/>
                                                <cc1:CalendarExtender ID="calPost" runat="server" PopupButtonID="CalendarBtnPostingDt" 
                                                    TargetControlID="tbPostingDt" OnClientDateSelectionChanged="dateSelectionChanged" Format="dd-MMM-yyyy" Enabled="True"></cc1:CalendarExtender></td>

<asp:UpdatePanel ID="UpdatePanel" runat="server" UpdateMode="Conditional">
                                              <ContentTemplate>
                                                <asp:Label ID="label18" runat = "server" Text="Post Cycle No"></asp:Label></td>
                                            <td id="Td33" style="width:290px;" runat="server">
                                                <asp:DropDownList ID = "ddlPostCycleNo" runat = "server" style ="width:180px;">
                                                    <asp:ListItem>ALL</asp:ListItem>
                                                </asp:DropDownList> </td>
                                                </ContentTemplate>
                                                <Triggers>
                                                <asp:AsyncPostBackTrigger ControlID="ClickBtn" EventName="Click" />
                                                </Triggers>
                                                </asp:UpdatePanel>


    function dateSelectionChanged(sender, args) {
    var PostingDt = document.getElementById('<%= tbPostingDt.ClientID%>').value.trim();
    var clickButton = document.getElementById("<%= ClickBtn.ClientID %>");
    clickButton.click();
} 
4

1 回答 1

0

没关系,我已经想通了。当用户从日历中选择日期时,我将 ontextChanged 用于文本框,并删除了 OnClientDateSelectionChanged、触发器和虚拟按钮。我保留了 UpdatePanel,它按我想要的方式工作。

于 2014-12-02T05:37:23.997 回答