gpt4 book ai didi

c# - ASP.NET:用户控件中的按钮不回发

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:27 24 4
gpt4 key购买 nike

我用这段代码有一个简单的用户控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="Pager" %>
<table style="width: 100%;">
<tr>
<td runat="server" id="PageControls">
<!-- This button has the problem: -->
<asp:Button ID="btnPrevPage" runat="server" Text="&larr;" OnClick="btnPrevPage_Click" />
Page
<asp:DropDownList runat="server" ID="ddlPage" AutoPostBack="true" OnSelectedIndexChanged="ddlPage_SelectedIndexChanged" />
of
<asp:Label ID="lblTotalPages" runat="server" />
<!-- This button has the problem: -->
<asp:Button ID="btnNextPage" runat="server" Text="&rarr;" OnClick="btnNextPage_Click" />
</td>
<td align="right" runat="server" id="itemsPerPageControls">
<asp:Literal ID="perPageText1" runat="server" />
<asp:DropDownList ID="ddlItemsPerPage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlItemsPerPage_SelectedIndexChanged" />
<asp:Literal ID="perPageText2" runat="server" />
</td>
</tr>
</table>

如您所见,这 2 个按钮连接到点击事件,这些事件在代码隐藏中正确定义。

现在,这是我在页面上包含控件实例的方式:

 <uc:Pager ID="Pager1" runat="server" TotalRecords="100" DisplayItemsPerPage="true"
ItemsPerPageChoices="10,25,50,100" ItemsPerPageFormatString="Sessions/Page: {0}"
PageSize="25" OnPageChanged="PageChanged" OnPageSizeChanged="PageChanged" />

不过我注意到,我的用户控件中的 2 个按钮在单击时不会导致回发。不过,下拉列表确实会导致回发。这是呈现的 HTML:

<table style="width: 100%;">
<tr>
<td id="ctl00_MainContent_Pager1_PageControls" align="left">
<!-- No onclick event! Why? -->
<input type="submit" name="ctl00$MainContent$Pager1$btnPrevPage" value="←" id="ctl00_MainContent_Pager1_btnPrevPage" />
Page
<select name="ctl00$MainContent$Pager1$ddlPage" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$Pager1$ddlPage\',\'\')', 0)"
id="ctl00_MainContent_Pager1_ddlPage">
<option value="1">1</option>
<option selected="selected" value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
of <span id="ctl00_MainContent_Pager1_lblTotalPages">6</span>
<!-- No onclick event! Why? -->
<input type="submit" name="ctl00$MainContent$Pager1$btnNextPage" value="→" id="ctl00_MainContent_Pager1_btnNextPage" />
</td>
<td id="ctl00_MainContent_Pager1_itemsPerPageControls" align="right">
Sessions/Page:
<select name="ctl00$MainContent$Pager1$ddlItemsPerPage" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$Pager1$ddlItemsPerPage\',\'\')', 0)"
id="ctl00_MainContent_Pager1_ddlItemsPerPage">
<option value="10">10</option>
<option selected="selected" value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</td>
</tr>
</table>

而且,如您所见,按钮的输入元素中没有呈现 onclick 属性。为什么不呢?

编辑

罗尼,你怎么这么笨??? <input type="submit" />不使用 javascript 来发布表单!

最佳答案

即使在按钮上也没有点击,因为它们是输入类型=提交,因此不需要 javascript 来引起回发。

您的页面中是否有任何可能导致问题的更新面板?

页面上是否有任何验证器可能会停止回发?如果是这种情况,您可能希望将 CausesValidation 设置为 false。

您是否在页面和控件的 Page_Load 中设置了断点,而不仅仅是在 Click 事件中设置断点以检查其是否正常工作。

您是否做过任何与禁用 ViewState 相关的事情?

关于c# - ASP.NET:用户控件中的按钮不回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com