1

我有 2 个事件要从用户控件触发回其父级。“UserSelected”和“NoUsersSelected”

一个在用户被选中时触发,另一个在所有用户被删除时触发。

我的问题是“UserSelected”有效,但“NoUsersSelected”失败......在下面的代码片段中,我已经注释了失败的行。

更新: 当我评论与第一个事件处理程序相关的所有代码时,第二个事件处理程序开始工作。

这是我的孩子(用户)控件上的代码:

    public event EventHandler UserSelected;
    public event EventHandler NoUsersSelected;

    protected virtual void onUserSelected(System.EventArgs e)
        {
            if (UserSelected != null) UserSelected(this, e);
        }

    protected virtual void onNoUsersSelected(System.EventArgs e)
        {

**###** PROBLEM ! - NoUsersSelected is always null so doesn't fire event **###**
            if (NoUsersSelected != null) NoUsersSelected(this, e);
        }

为了引发事件,我使用了 GridView TemplateField 中的按钮:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="btnSelect" CommandArgument='<%# Eval("UserID") %>' CommandName="SelectUser" ToolTip="Select User" runat="server" UseSubmitBehavior="false" CssClass="GridBtn_Select" CausesValidation="false" />
    </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="btnDelete" CommandArgument='<%# Eval("UserID") %>' CommandName="DeleteUser" ToolTip="Delete User" runat="server" OnClientClick="javascript:if(!confirm('Are you sure?')) return false;" UseSubmitBehavior="false" CssClass="GridBtn_Delete" CausesValidation="false" />
    </ItemTemplate>
</asp:TemplateField>

以下是这些按钮背后的代码:

if (e.CommandName == "SelectUser")
        {onUserSelected(System.EventArgs.Empty);}

和...

if (e.CommandName == "DeleteUser")
        { //this is where I remove the user from the grid...

            if (gridUsers.Rows.Count < 1)
                {onNoUsersSelected(System.EventArgs.Empty);}

.

在承载用户控件的父页面上:

protected void Page_Load(object sender, EventArgs e)
        {
            //Bind to the event on child control
            GridAdvertiserUsers.UserSelected += UserSelected_EventHandler;
            GridAdvertiserUsers.NoUsersSelected += NoUsersLinked_EventHandler;
}

以及事件调用的函数:

  void UserSelected_EventHandler(object sender, EventArgs e)
        { //do stuff here }

  void NoUsersLinked_EventHandler(object sender, EventArgs e)
        { //Do other stuff }

更新:

调用 onUserSelected 时,两个事件似乎都正确连接了它们的方法 调用 onUserSelected 时,两个事件似乎都正确连接了它们的方法

但是当 onNoUserSelected 被调用时,它们都是空的: 当 onNoUserSelected 被调用时,它们都是 null

4

0 回答 0