如何获取组合框中所选项目的 ID 并用它填充另一个组合框?
How to get id of the selected item in combobox and populate another combobox with it?
我用 Ajax Toolkit
创建了 2 个组合框。其中之一有一个系统列表。 I wanted to fill the other combobox with a list of subsystems whenever a system is selected.我没有使用 DisplayMember
或 ValueMember
,大多数示例都在使用它们。
.aspx 端以防万一:
<ajaxToolkit:ComboBox ID="cbox1" runat="server" OnSelectedIndexChanged="cbox1_SelectedIndexChanged" />
这对我正在尝试的方法可行吗?我使用的事件是否正确?(我猜不是,但其他事件似乎无关)让我给你看代码:
protected void fillSystemCombo()
{
var sysOperations = new ModelOperations.ConstantSystem.ConstantSystemOperations();
var sys = sysOperations.GetSystemList().TransactionResultList;
foreach (var item in sys)
{
cbox1.Items.Add(item.description);
}
}
这很好用,我可以在我的第一个组合框中看到系统。
这是我尝试填充第二个的方法:
protected void cbox1_SelectedIndexChanged(object sender, EventArgs e)
{
var subSysOperations = new ModelOperations.ConstantSubSystem.ConstantSubSystemOperations();
int index = Convert.ToInt32(cbox1.SelectedItem.Value);//i think this should get the id...
var subsys = subSysOperations.GetSubSystemList().TransactionResultList;
foreach (var item in subsys)
{
if (item.sysID == index)
{
cbox2.Items.Add(item.description);
}
}
}
sysID
是SubSystem中的外键,也就是System的ID
。顺便说一句,即使我在组合框中单击了一个项目,但在调试程序时我的 SelectedIndexChanged
事件从未触发。
仔细阅读了Items.Add
所取的参数后,我其实找到了答案。它需要一个 ListItem
,所以如果我在循环中创建一个 ListItem
,我最终可以添加带有 Text
和 Value
的项目,如下所示:
foreach (var item in sys)
{
combo1.Items.Add(new ListItem { Text = item.description, Value = item.ID.ToString() });
}
之后我可以用
获取索引
int index = Convert.ToInt32(combo1.SelectedValue);
我用 Ajax Toolkit
创建了 2 个组合框。其中之一有一个系统列表。 I wanted to fill the other combobox with a list of subsystems whenever a system is selected.我没有使用 DisplayMember
或 ValueMember
,大多数示例都在使用它们。
.aspx 端以防万一:
<ajaxToolkit:ComboBox ID="cbox1" runat="server" OnSelectedIndexChanged="cbox1_SelectedIndexChanged" />
这对我正在尝试的方法可行吗?我使用的事件是否正确?(我猜不是,但其他事件似乎无关)让我给你看代码:
protected void fillSystemCombo()
{
var sysOperations = new ModelOperations.ConstantSystem.ConstantSystemOperations();
var sys = sysOperations.GetSystemList().TransactionResultList;
foreach (var item in sys)
{
cbox1.Items.Add(item.description);
}
}
这很好用,我可以在我的第一个组合框中看到系统。
这是我尝试填充第二个的方法:
protected void cbox1_SelectedIndexChanged(object sender, EventArgs e)
{
var subSysOperations = new ModelOperations.ConstantSubSystem.ConstantSubSystemOperations();
int index = Convert.ToInt32(cbox1.SelectedItem.Value);//i think this should get the id...
var subsys = subSysOperations.GetSubSystemList().TransactionResultList;
foreach (var item in subsys)
{
if (item.sysID == index)
{
cbox2.Items.Add(item.description);
}
}
}
sysID
是SubSystem中的外键,也就是System的ID
。顺便说一句,即使我在组合框中单击了一个项目,但在调试程序时我的 SelectedIndexChanged
事件从未触发。
仔细阅读了Items.Add
所取的参数后,我其实找到了答案。它需要一个 ListItem
,所以如果我在循环中创建一个 ListItem
,我最终可以添加带有 Text
和 Value
的项目,如下所示:
foreach (var item in sys)
{
combo1.Items.Add(new ListItem { Text = item.description, Value = item.ID.ToString() });
}
之后我可以用
获取索引int index = Convert.ToInt32(combo1.SelectedValue);