如何获取组合框中选定项的id,并用它填充另一个组合框

本文关键字:组合 id 另一个 填充 何获取 获取 | 更新日期: 2023-09-27 18:04:22

我用Ajax Toolkit创建了2个组合框。其中一个有一个系统列表。我想在选择系统时用子系统列表填充另一个组合框。我没有使用DisplayMemberValueMember,大多数例子都在使用它们。.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事件从未触发,当我调试程序,即使我点击一个项目在组合框。

如何获取组合框中选定项的id,并用它填充另一个组合框

在仔细阅读Items.Add所采取的参数后,我实际上找到了答案。它需要一个ListItem,所以如果我在循环中创建一个ListItem,我最终可以添加TextValue,像这样:

   foreach (var item in sys)
            {
                combo1.Items.Add(new ListItem { Text = item.description, Value = item.ID.ToString() });
            }

之后我可以用

得到索引
int index = Convert.ToInt32(combo1.SelectedValue);