首页 > 解决方案 > 当在网格视图内的更新面板内时,Asp 图像按钮单击事件不会为所有行触发

问题描述

我面临一个奇怪的问题。在网格视图内,我有一些图像按钮,该按钮再次位于更新面板内,用于加载一些日历内容,部分回发,无需任何页面刷新。此部分回发适用于前几行,但在几行之后,可以说大约 15 行按钮单击事件未命中,只有断点进入页面加载事件和整个页面刷新。

每行都有大量数据,但我例如显示更新面板结构。请帮我解决这个问题。我尝试了各种方法来修复它,但仍然面临同样的问题。

<asp:GridView ID="GVSales" runat="server" AllowPaging="false" AutoGenerateColumns="false" DataKeyNames="UserId" BackColor="#FFFFCC" EmptyDataText="No salesman selected to show" OnRowDataBound="GVSales_OnRowDataBound" OnDataBound="GVSales_AfterDataBound">
     <PagerSettings Visible="false" />
     <AlternatingRowStyle BackColor="#99CCFF" />
     <Columns>
     <asp:BoundField DataField="GroupName" Visible="false" />
     <asp:TemplateField>
     <ItemTemplate>
     <table width="100%" border="1px" cellpadding="0" cellspacing="0" style="color: Black; font-family: Arial; text-align: center">
     <tr>
     <td colspan="18" style="text-align: left">
     <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
     <ContentTemplate>
     <div>
     <div id="divNavigateCal" runat="server" style="float: right; display: none">
     <asp:HiddenField ID="hdnDaydiff" runat="server" Value="1" />
     <div class="blink" id="BlinkLoad" style="width: 100px; padding-top: 10px; vertical-align: top; display: none">Please Wait...</div>
     <asp:ImageButton ID="imgBtnPrevious" AutoPostback="false" runat="server" class="Previous" CommandArgument='<%# Eval("UserId")%>' Customid='<%# Eval("UserId") %>' OnClientClick='<%# "GetCustomerID(" + Eval("UserId") + ");" %>' ImageUrl="~/admin/images/cal_previous.gif" OnClick="imgBtnPrevious_Click" />
     <asp:ImageButton ID="imgBtnNext" runat="server" class="Next" CommandArgument='<%# Eval("UserId")%>' Customid='<%#  Eval("UserId") %>' OnClientClick='<%# "GetCustomerID(" + Eval("UserId") + ");" %>' ImageUrl="~/admin/images/cal_next.gif" OnClick="imgBtnNext_Click"/> 
     </div>
     <input type="button" class="ShowCalendar" value="Show/Hide Calendar" runat="server" data-id='<%# Eval("UserId")%>' /> <asp:Label ID="lbl_alert1" runat="server" Text="Started this week with low meetings" ForeColor="Red" Font-Bold="true" Width="300" Visible='<%# (Convert.ToBoolean(Eval("Alert1"))) %>'></asp:Label>
     <asp:Label ID="Label1" runat="server" Text="Did not create 7 meetings on monday." ForeColor="Red" Font-Bold="true" Width="300" Visible='<%# (Convert.ToBoolean(Eval("Alert2"))) %>'></asp:Label> 
        <table id="calendar">
        <tr>
        <td>
        </td>
        </tr>
        </table>
        </div>
        </ContentTemplate>
     <Triggers>                                                           
     <asp:AsyncPostBackTrigger ControlID="imgBtnPrevious" EventName="Click" /> 
     <asp:AsyncPostBackTrigger ControlID="imgBtnNext" EventName="Click" /> 
     </Triggers>
     </asp:UpdatePanel>
</td>
</tr>
</table>
 </ItemTemplate>
 </asp:TemplateField>
 </Columns>
 </asp:GridView>

在这里,我使用部分回发更新表日历内容,用于 imgBtnPrevious imgBtnNext 的按钮单击事件,该事件具有类似日历的结构。此代码适用于第 14 - 15 行,但此问题随后出现。

注意:每行中还有其他大量数据,但这里我只显示了更新面板结构。

更新

我已进一步调查此问题并禁用所有更新面板以检查更新面板是否导致问题,但我发现它不是由于更新面板。按钮单击事件在 14 -15 行后未触发。甚至尝试使用行命令,仍然相同。这个问题的根源可能是什么?任何解决方案?请帮忙。每当我单击按钮时,它只会重新加载页面,但单击事件不会触发调试器。

标签: c#asp.netgridviewupdatepanel

解决方案


我发现了这个问题。网格视图的 OnRowdataBound 有一些代码在该表中附加了额外的行,这导致了这个奇怪的问题。


推荐阅读