用户控制事件无法访问其处理程序

时间:2009-06-01 16:01:35

标签: c# asp.net controls

我正在尝试创建一个用户控件来包装Membership API(一组自定义Gridviews以更好地显示数据),并且当代码和控件在页面中正常工作时,我将它们移动到。 ascx,事件停止向它发射。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomMembership.ascx.cs" Inherits="CCGlink.CustomMembership" %>
<asp:Panel ID="mainPnl" runat="server">
<asp:Label 
    id="lblError"
    ForeColor="Red" 
    Font-Bold="true"
    runat="server" />
<asp:GridView
    id="grdUsers"
    HeaderStyle-cssclass="<%# _headercss %>"
    RowStyle-cssclass="<%# _rowcss %>"
    AlternatingRowStyle-cssclass="<%# _alternatingcss %>"
    OnRowUpdating="grdUsers_RowUpdating"
    OnRowDeleting="grdUsers_RowDeleting"
    OnRowCancelingEdit="grdUsers_cancelEdit"
    autogeneratecolumns="false"
    allowsorting="true"
    AllowPaging="true"
    EmptyDataText="No users..."
    pagesize="<%# PageSizeForBoth %>"
    runat="server">
<!-- ...columns... -->
</asp:GridView>
<asp:Button
    id="btnAllDetails"
    onclick="btnAllDetails_clicked"
    text="Full Info"
    runat="server" />
<asp:GridView 
    DataKeyNames="UserName"
    HeaderStyle-cssclass="<%# _headercss %>"
    RowStyle-cssclass="<%# _rowcss %>"
    AlternatingRowStyle-cssclass="<%# _alternatingcss %>"
    id="grdAllDetails"
    visible="false"
    allowsorting="true"
    EmptyDataText="No users in DB."
    pagesize="<%# PageSizeForBoth %>"
    runat="server" />
<asp:Button
    id="btnDoneAllDetails"
    onclick="btnAllDetails_clicked"
    text="Done."
    Visible="false"
    runat="server" />
</asp:Panel>

但是,前两个控件中没有任何事件(gridview grdUsers和按钮btnAllDetails)根本不会发生,我已在调试器中验证了这一点。如果它们在aspx页面中出现得很好,为什么它们会在转移到ascx时死掉?

我在aspx中的代码现在是:

 <div class="admin-right">
    <asp:ScriptManager ID="sm1" runat="server" />
    <h1>User Management</h1>
    <div class="admin-right-users">
    <asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
        <cm1:CustomMembership
            id="showUsers" 
            PageSizeForBoth="9" 
            AlternatingRowStylecssclass="alternating"
            RowStylecssclass="row"
            DataSource="srcUsers"
            HeaderStylecssclass="header" 
            runat="server" />
    </ContentTemplate>
    </asp:UpdatePanel>
    </div>

感谢。

2 个答案:

答案 0 :(得分:0)

您是否正在构建网站或Web应用程序 - 如果您正在构建Web应用程序,那么当您将控件移动到用户控件中时,是否检查过.designer文件已正确更新?

答案 1 :(得分:0)

http://forums.asp.net/t/1102183.aspx

这解释了CommandField中的ButtonType =“Image”存在问题。将条目更改为“链接”可以解决此问题。