【问题标题】:Repeater Item Command not triggered but Causes server side validations on all validators of page中继器项目命令未触发但导致页面的所有验证器上的服务器端验证
【发布时间】:2018-05-24 00:35:21
【问题描述】:

我读过关于堆栈溢出的类似问题,但这可能有点不同。由于我正在处理的页面有很多用户控件并且 Ajax 已经在工作......我将首先尝试总结代码

该页面有一个链接按钮查看详细信息,可在弹出窗口中打开用户控件EmploymentOfferDetails

在同一页面的末尾,我添加了一个带有 imagebutton 的中继器控件,并希望在单击 imagebutton 时打开另一个带有另一个用户控件的弹出窗口

我已将 itemcommand 添加到中继器,但未触发(已阅读所有中继器项命令未触发帖子)

现在的问题是,当我打开单击此图像按钮时,employmentOfferDetails 控件的验证器以某种方式被触发,并且由于它有一个空对象,它会导致验证错误并且调试器转到 Application_EndRequest ..这是代码

(相同的代码适用于中继器控件之外的图像按钮):S

 <telerik:AjaxSetting AjaxControlID="lbEmploymentOfferDetails">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="pnlEmploymentOfferDetails" LoadingPanelID="rlpRIDESelected" />
            <telerik:AjaxUpdatedControl ControlID="hfEmploymentOfferId" />
        </UpdatedControls>
    </telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="lbEmploymentOfferDummyLink">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="pnlEmploymentOfferDetails" LoadingPanelID="rlpRIDESelected" />
            <telerik:AjaxUpdatedControl ControlID="hfEmploymentOfferId" />
        </UpdatedControls>
    </telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rptMedicareReplyDateGroup">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="ucAGPTMailDetails" />
        </UpdatedControls>
    </telerik:AjaxSetting>

HTML

<div id="divEmploymentOfferDummylink" style="position:absolute;z-index:900;left:0;top:0;display:none;">
<asp:LinkButton runat="server" ID="lbEmploymentOfferDummyLink" Text="View Employment Offer Details" Visible="true" CausesValidation="false" OnClientClick="ShowEmploymentOfferDetails();"></asp:LinkButton>
</div>
<asp:Panel runat="server" ID="pnlPlacementBasicInformation">
<div class="control-group required" id="divEmploymentOfferLink" runat="server" visible="false">
    <asp:Label runat="server" AssociatedControlID="lbEmploymentOfferDetails" CssClass="control-label"
               Text="Employment Offer" ID="lblEmploymentOffer" />
    <div class="controls">
        <asp:LinkButton runat="server" ID="lbEmploymentOfferDetails" Text="View Details"
                        CausesValidation="false" OnClientClick="ShowEmploymentOfferDetails();"></asp:LinkButton>
    </div>
</div>
<div id="medicareInformation" class="hide well">
    <!-- Main facility and Additional Sites table -->
    <!--Another repeater control goes here-->

    <div class="control-group">
        <asp:Label ID="Label20" runat="server" AssociatedControlID="lblMedicareReplyDate" Text="Medicare Send Confirmation:"
                   CssClass="control-label" Width="220px" />
        <div class="controls" style="margin-left: 225px;">
            <asp:Label ID="lblMedicareReplyDate" runat="server" />
            <asp:Literal ID="litMedicareReplyEmaiId" runat="server" Visible="false" />
            <asp:ImageButton ID="iBtnMedciareReplyEmail" runat="server" ImageUrl="~/Images/Icons/communication-active.png" Width="25px" AlternateText="Click to open email" ToolTip="Click to open email" />
        </div>
    </div>
    <div class="control-group">
        <asp:Label ID="Label23" runat="server" AssociatedControlID="rptMedicareReplyDateGroup" Text="Medicare Send Confirmation:"
                   CssClass="control-label" Width="220px" />
        <asp:Repeater runat="server" ID="rptMedicareReplyDateGroup">
            <ItemTemplate>
                <div class="row" id="trRepeaterItem" runat="server">
                    <asp:Label ID="lblMedicareReplyDateItem" runat="server" />
                    <asp:Literal ID="litMedicareReplyEmaiIdItem" runat="server" Visible="false" />
                    <asp:ImageButton ID="iBtnMedciareReplyEmailItem" runat="server" ImageUrl="~/Images/Icons/communication-active.png" CausesValidation="false" Width="25px" AlternateText="Click to open email" ToolTip="Click to open email" CommandName="OpenEmail" OnClientClick="ShowMedicareDetails();" />
                    <asp:LinkButton ID="lnkTest" runat="server" OnClientClick="ShowMedicareDetails();" Text="Test Button" OnClick="lnkTest_Click" CausesValidation="false" />
                </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>
</div>

在图像按钮上单击我正在打开包含另一个用户控件的模式弹出窗口。现在这会导致整个页面的服务器端验证,包括 EmploymentOfferDetails 的服务器端验证,并且 Application_EndRequest 被调用,因为 EmploymentOfferDetails 没有正确初始化..因此(我假设)中继器 itemcommand 没有被触发。

但 iBtnMedciareReplyEmail(一个外部中继器)工作正常。

我希望我能够解释我的问题

【问题讨论】:

    标签: javascript ajax validation user-controls repeater


    【解决方案1】:

    在这里找到我的答案:

    Repeater Item Command Causes Validation

    对于遇到此问题并偶然发现这篇文章的任何人,这就是我发现的。

    原来问题正在发生,因为我有 在中继器上设置 EnableViewState="false"。这打破了 以某种方式回发事件,并使页面上的每个验证器都触发。 我所要做的就是手动调用中继器上的 DataBind() 从 在 Page_Load() 中,它立即清除了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2011-07-20
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多