javascript - 无法在 UpdatePannel 中获取 DropDownList 控件

标签 javascript asp.net vb.net updatepanel

我的 ASPX 页面中有一个 UpdatePannel,里面有一些控件,在这些控件中我有一个 DropDownList。当我使用以下方法切换到编辑模式时,我需要在后面的代码中从 DropDownList 中删除一个 ListItem:

 Protected Sub dvApplicationDetail_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewModeEventArgs) Handles dvApplicationDetail.ModeChanging
    Dim Result As DataSet
    Try
        If e.NewMode = DetailsViewMode.Insert Then
            dvApplicationDetail.ChangeMode(DetailsViewMode.ReadOnly)
        ElseIf e.NewMode = DetailsViewMode.Edit Then
            dvApplicationDetail.ChangeMode(DetailsViewMode.Edit)

            Dim PaymentReminders = CType(Me.dvApplicationDetail.FindControl("PayReminders"), DropDownList)

        End If
End Sub

但我无法使用此方法获取 DropDownList,因为尚未加载面板:

Dim PaymentReminders = CType(Me.dvApplicationDetail.FindControl("PayReminders"), DropDownList)

这是我为此准备的 ASPX 页面:

<asp:UpdatePanel ID="updatePanel5" runat="server">
                                                                <ContentTemplate>
                                                                    <asp:DetailsView ID="dvApplicationDetail" runat="server" CssClass="TbItemsVal" Width="100%"
                                                                        AutoGenerateEditButton="True" AutoGenerateRows="False" BackColor="White">
                                                                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                                                        <EditRowStyle Font-Bold="True" CssClass="TbItems" />
                                                                        <RowStyle BackColor="#EEE9CB" ForeColor="#333333" />
                                                                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                                                        <Fields>
                                                                                                                                                            <asp:TemplateField Visible="false">
                                                                                <headertemplate> 
                                                                                    Insured Accepts the<br />
                                                                                    <a href="#">Electronic Terms and Conditions?</a>
                                                                                </headertemplate>                                                                                    
                                                                                <ItemTemplate>
                                                                                    <%# Eval("AcceptTerms") %>                                                                                                                                                                               
                                                                                </ItemTemplate>
                                                                                <EditItemTemplate>
                                                                                    <%--<asp:TextBox ID="AcceptTerms" runat="server" Text='' />--%>
                                                                                    <asp:DropDownList ID="AcceptTerms" runat="server" onchange="changePaymentReminder()" Text='<%# Eval("AcceptTerms") %>' AutoPostBack="true" OnSelectedIndexChanged="AcceptTerms_SelectedIndexChanged">
                                                                                        <asp:ListItem Text="Select" Value="Select"></asp:ListItem>
                                                                                        <asp:ListItem Text="Yes" Value="Yes"></asp:ListItem>
                                                                                        <asp:ListItem Text="No" Value="No"></asp:ListItem>
                                                                                    </asp:DropDownList>
                                                                                    <%--<asp:RegularExpressionValidator ID="REVAcceptTerms" runat="server" ControlToValidate="AcceptTerms" />--%>
                                                                                </EditItemTemplate>
                                                                                <HeaderStyle Font-Bold="True" />
                                                                                <ItemStyle Width="61%" />
                                                                            </asp:TemplateField>

                                                                            <asp:TemplateField HeaderText="Payment Reminders">                                                                                  
                                                                                <ItemTemplate> 
                                                                                    <%# Eval("B28_EMAIL_FLAG") %>                                                                                        
                                                                                </ItemTemplate>
                                                                                <EditItemTemplate>
                                                                                    <%--<asp:TextBox ID="AcceptTerms" runat="server" Text='' />--%>
                                                                                    <asp:DropDownList ID="PayReminders" runat="server" Text='<%# Eval("B28_EMAIL_FLAG") %>'>
                                                                                        <asp:ListItem Text="Select" Value="Select"></asp:ListItem>
                                                                                        <asp:ListItem Text="Text" Value="Text"></asp:ListItem>
                                                                                        <asp:ListItem Text="Email" Value="Email"></asp:ListItem>  
                                                                                        <asp:ListItem Text="Text&Email" Value="Text&Email"></asp:ListItem> 
                                                                                        <asp:ListItem Text="Declined" Value="Declined"></asp:ListItem>  
                                                                                    </asp:DropDownList>
                                                                                    <div style="vertical-align:top;display:inline-block;">
                                                                                        <table>
                                                                                            <tr>
                                                                                                <td></td>
                                                                                                <td><img id="imgWait" runat="server" src="../../Images/CircleBall.gif" style="display: none; text-align: center;" alt="" />
                                                                                                    <asp:Label ID="LblMsg" runat="server" BorderStyle="None" Width="215px" Font-Size="12px" ForeColor="Red" ></asp:Label></td>
                                                                                            </tr>
                                                                                        </table>
                                                                                    </div>
                                                                                    <%--<asp:CompareValidator id="CompareFieldValidator1" runat="server" ForeColor="Red" ControlToValidate="PayReminders" ValueToCompare="Select" Type="Integer" Operator="NotEqual" ErrorMessage="Please select a payment reminder type"></asp:CompareValidator >--%>
                                                                                </EditItemTemplate>
                                                                                <HeaderStyle Font-Bold="True" />
                                                                                <ItemStyle Width="61%" />
                                                                            </asp:TemplateField>
                                                                        </Fields>
                                                                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                                                        <AlternatingRowStyle BackColor="WhiteSmoke" ForeColor="#284775" />
                                                                        <CommandRowStyle CssClass="btnmain" HorizontalAlign="Center" Width="20px" Wrap="True"
                                                                            BorderStyle="Solid" BorderWidth="2px" />
                                                                    </asp:DetailsView>
                                                                    <asp:HiddenField ID="hidOrigEmail" runat="server" />
                                                                    <asp:Panel ID="PnlContactUpdateError" HorizontalAlign="Center" runat="server">
                                                                        <asp:Label ID="LblContactUpdateError" runat="server" ForeColor="Red"></asp:Label>
                                                                    </asp:Panel>
                                                                </ContentTemplate>
                                                            </asp:UpdatePanel>

我也尝试使用 javasciprt 来使用这个脚本来做到这一点:

var prddl = document.getElementById('ctl00_ContentPlaceHolder2_dvApplicationDetail_PayReminders');
    $(window).bind("load", function () {
        prddl.remove(4);
    });

但是没有机会! 请问你有什么想法吗?

提前谢谢你。

最佳答案

我成功解决了这个问题,并愿意与您分享解决方案。 解决方案是简单地添加代码以在页面的 Prerender() 函数中获取 DropDownList,因为这是呈现页面之前调用的最后一个事件。

谢谢,

关于javascript - 无法在 UpdatePannel 中获取 DropDownList 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098283/

相关文章:

c# - 根据 ASP.NET MVC 4 Internet 应用程序登录中的用户角色重定向到不同的页面

javascript - 检查 div 的边距而不是每隔一秒移动一次

javascript - 使用 React、博客文章和 Wordpress API 进行动态路由

.net - 在新项目中创建部分类

javascript - Ajax/jQuery post 之后从 DOM 获取值

c# - .NET 接口(interface)如何包含数据

.net - 为什么 .NET 字典发牢骚?

VB.NET 限制选项卡排序?

javascript - getPropertyValue ('font-size' ) 为 firefox 和 chrome 返回不同的值

javascript - 推送数组中的值以匹配特定格式