如何获取组合框中选定项的id,并用它填充另一个组合框
本文关键字:组合 id 另一个 填充 何获取 获取 | 更新日期: 2023-09-27 18:04:22
我用Ajax Toolkit
创建了2个组合框。其中一个有一个系统列表。我想在选择系统时用子系统列表填充另一个组合框。我没有使用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
是子系统的外键,即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);