ASP.Net事件每隔一段时间才被提出?

时间:2010-03-09 10:57:16

标签: asp.net vb.net events webusercontrol webusercontrols

我有一个ASP.Net Web用户控件,它代表列表中的单个条目。为了允许用户对项目进行重新排序,每个项目都有按钮,用于在列表中向上或向下移动项目。单击其中一个会将一个事件引发到父页面,然后将其置于占位符控件中。

列表条目中的代码片段:

Public Event UpClicked As System.EventHandler
Protected Sub btnUp_Click(ByVal sender As Object, ByVal e As System.EventArgs)
              Handles btnUp.Click
    RaiseEvent UpClicked(Me, New EventArgs())
End Sub

父容器:

    rem (within the code to add an individual item to the placeholder)
    AddHandler l_oItem.UpClicked, AddressOf UpClicked


Protected Sub UpClicked(ByVal sender As Object, ByVal e As EventArgs)
    MoveItem(DirectCast(sender, ScriptListItem), -1)
End Sub

它最初看起来像每隔一次测试发送者(通过其属性验证)到达UpClicked的值是相邻的ListItem,不是我刚刚点击的那个 - 第一个click始终是错误的,然后是第二个用于正确控制。

目前,测试似乎表明按钮的点击事件每隔一段时间就会被忽略。虽然事件肯定是在建立的,但控件内点击事件的断点并没有被击中。

为什么?

1 个答案:

答案 0 :(得分:0)

要冒泡事件,您可以让用户控件定义事件:

public event SomeEventHandler UpClicked;

其中引用了这个:

public class SomeEventArgs {
   public ListItem Selected { get; set; }
}
public delegate void SomeEventHandler(object sender, SomeEventArgs e);

您可以在这里存储多个房产;您可以存储任意数量的详细信息。但是你可以使用这个事件arg将所有信息传递给页面......问题可能就是你如何调用事件;确保在用户控件中执行以下操作:

public event SomeEventHandler UpClicked;

protected void OnUpClicked(SomeEventArgs e)
{
   if (UpClicked != null) UpClicked(this, e);
}

protected void button_click(object sender, EventArgs e)
{
    this.OnUpClicked(new SomeEventArgs { Selected = this.list.SelectedItem; });
}

HTH。