如何在代码后面引发列表控件SelectedIndexChanged事件?

时间:2010-02-19 02:31:34

标签: c# asp.net

如何使用C#在代码隐藏中引发asp.net List控件的SelectedIndexChanged事件?

3 个答案:

答案 0 :(得分:15)

如果您正在询问如何手动触发事件,以便它可以运行所附的任何逻辑:不要

您的活动处理程序应该很苗条。如果需要从多个位置执行相同的操作,则将该功能提取到自己的方法中,并让事件处理程序调用该方法。例如:

private void CountryListBox_SelectedIndexChanged(object sender, EventArgs e)
{
    UpdateStates(ListBox1.SelectedItem.Text);
}

private void UpdateStates(string country)
{
    StateListBox.DataSource = GetStates(country);
    StateListBox.DataBind();
}

现在,您只需调用此事件处理程序引用的方法,即

,而不是尝试触发SelectedIndexChanged事件。
private void Page_Load(object sender, EventArgs e)
{
    UpdateStates("USA");
}

不要在事件处理程序中放置复杂的逻辑,并尝试从意外的位置引发这些事件。相反,将复杂逻辑放在自己的方法中,以便您可以从其他地方执行相关操作

答案 1 :(得分:4)

自动引发。

  • 进入事件部分,在属性窗口中lightening bolt

alt text http://img704.imageshack.us/img704/6100/listbox.jpg

  • 双击旁边的占位符 事件。这就是你将得到的。
  

protected void ListBox1_SelectedIndexChanged(object   发件人,EventArgs e)        {
       }

如果您想从另一个代码块中引发此事件,请调用

  

ListBox1_SelectedIndexChanged(发件人,   E);

答案 2 :(得分:0)

如果您想要的不仅仅是执行为所选索引编码的代码行为(如上一个答案中所列),简短的回答是没有简单的方法。您可以在prerender或render上编写一个简单的代码,以在呈现的HTML中显式定义控件ID变量,然后使用javascript设置所选的索引。这将导致触发事件的回发。或者,您可以注册ajax回调方法,让客户端在某些事件发生时或通过自动计时器调用。