C# 如何以编程方式启动DropDownList Box SelectIndexChange事件?
[编辑] 在我的代码中无法直接调用以下命令:C# 如何以编程方式启动DropDownList Box SelectIndexChange事件?,c#,asp.net,C#,Asp.net,[编辑] 在我的代码中无法直接调用以下命令: void control_Changed(object sender, EventArgs e) 此功能通过DropDownListBox集合循环,每个DropDownListBox具有不同的选择更改功能。而且他们不在同一个页面,他们收集的DropDownListBox是来自不同用户控制的页面 我看到很多解决方案只是调用事件应该触发的函数。。 但这对我的案子不起作用 我有一个代码,可以将数据映射到dropdownlistbox集合,并为每个dr
void control_Changed(object sender, EventArgs e)
此功能通过DropDownListBox集合循环,每个DropDownListBox具有不同的选择更改功能。而且他们不在同一个页面,他们收集的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事件)生成适当的下拉列表项
所以我想知道是否有任何方法可以通过编程启动DropDownList Box
更清楚的是,上面的函数是通过迭代页面上的所有DropDownListBox来调用的,因此它们可以链接到不同的函数中
Combobox_SelectedItem(null, null);
如果需要,您可以将所需的任何参数伪造为参数
如果需要,您可以将所需的任何参数伪造为参数。如果您要使用传统的
无效控件(对象发送器,事件参数)
code
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
}
如果要使用传统的
void控件\u Changed(对象发送方,事件参数)
code
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
}
所以你想循环一组DropDownList并调用每个特定的事件?是的,因为每个都使用不同的函数,在这个函数中我无法调用它们的函数。所以你想循环一组DropDownList并调用每个特定的事件?是的,因为他们每个人都使用不同的函数,在这个函数中,我没有办法调用他们的函数。就像我说的,没有办法在那里调用它的函数。。。。它们是DropDownBox的集合,功能是通过DropDownBox集合循环,每个DropDownBox链接到不同的函数…我不明白为什么这很重要,它仍然归结为调用方法,您可能需要一个switch语句来确定调用哪个方法DropDownListBox的每个方法都来自不同的用户控件,此函数不知道DropDownListBox来自何处,这是一个通用的功能。这是否恰好是为了切换NCI的队长?@King这些用户控件中的每一个都暴露了你想要触发的事件吗?如果他们这样做了,你可以像我的例子一样称呼它。如果事件不是公共的,您可能需要尝试使用反射来访问它。不管是哪种情况,你都需要从根本上知道该给谁打电话。唯一的另一种方法是使用多态性,但我认为这对您的模型不太适用,因为这些已经是用户控件了。正如我所说,没有办法在那里调用它的函数。。。。它们是DropDownBox的集合,功能是通过DropDownBox集合循环,每个DropDownBox链接到不同的函数…我不明白为什么这很重要,它仍然归结为调用方法,您可能需要一个switch语句来确定调用哪个方法DropDownListBox的每个方法都来自不同的用户控件,此函数不知道DropDownListBox来自何处,这是一个通用的功能。这是否恰好是为了切换NCI的队长?@King这些用户控件中的每一个都暴露了你想要触发的事件吗?如果他们这样做了,你可以像我的例子一样称呼它。如果事件不是公共的,您可能需要尝试使用反射来访问它。不管是哪种情况,你都需要从根本上知道该给谁打电话。唯一的另一种方法是使用多态性,但我认为这对您的模型不起作用,因为这些已经是用户控件了。