如何以编程方式触发DropDownList Box SelectedIndexChanged事件?

时间:2011-04-04 18:34:32

标签: c# asp.net

[编辑]

在我的代码中无法直接调用以下内容:

void control_Changed(object sender, EventArgs e) 

此函数循环通过DropDownListBox的Collection,每个DropDownListBox具有不同的Select_Change函数。另外它们不在同一页面中,它们的DropDownListBox集合来自不同用户对页面的控制。


我看到很多解决方案只是调用事件应该触发的函数。 但这不会影响我的情况。

我有一个代码,可以将数据映射到dropdownlistbox的集合,并为每个dropdownlistbox选择正确的dropdownlistbox项。

所以,有点像这样:

foreach (Control aControl in aControlCollection){
    if (aControl.GetType() == typeof(RadComboBox))
                {
                    bool FoundItem = false;
                    RadComboBox aComboBox = (aControl as RadComboBox);
                    foreach (RadComboBoxItem aComboItem in aComboBox.Items)
                    {
                        Debug.WriteLine("aComboItem " + aComboItem.Text + " Value" + aComboItem.Value);
                        if (aComboItem.Value.ToLower() == _dataObject.ToString().ToLower())
                        {
                            //aComboBox.SelectedIndex = aComboBox.Items.IndexOf(aComboItem);
                            aComboItem.Selected = true;
                            FoundItem = true;
                            ~~~FIRE EVENT HERE~~~~~
                            //break;
                        }
                        else {
                            aComboItem.Selected = false;                        
                        }
                    }
                    if (!FoundItem)
                    {
                        RadComboBoxItem aComboItem = new RadComboBoxItem();
                        aComboItem.Value = _dataObject.ToString();
                        aComboItem.Text = _dataObject.ToString();
                        aComboBox.Items.Add(aComboItem);
                        aComboBox.SelectedIndex = aComboBox.Items.IndexOf(aComboItem);
                    }
                }

            }
}

通常在页面中,当用户选择第一个下拉框时,后面的第二个下拉框将根据第一个下拉框(来自第一个下拉框selectindexchange事件)生成正确的下拉列表项。

所以我想知道我是否可以通过编程方式触发DropDownListBox?


为了使其更加清晰,上面的函数是通过遍历页面上的所有DropDownListBox来调用,因此它们可以链接到不同的函数。

2 个答案:

答案 0 :(得分:1)

Combobox_SelectedItem(null, null);

如果需要,您可以将所需的任何参数伪装到参数中。

答案 1 :(得分:0)

如果您使用传统的void control_Changed(object sender, EventArgs e)代码......

if (aComboItem.Value.ToLower() == _dataObject.ToString().ToLower())
{
  //aComboBox.SelectedIndex = aComboBox.Items.IndexOf(aComboItem);
  aComboItem.Selected = true;
  FoundItem = true;
  control_Changed(aComboItem, new EventArgs());
}


void control_Changed(object sender, EventArgs e) {
  // your code here
}