代码之家  ›  专栏  ›  技术社区  ›  ardatosun

如何在组合框中获取所选项目的id并用它填充另一个组合框?

  •  0
  • ardatosun  · 技术社区  · 9 年前

    我用创建了2个组合框 Ajax Toolkit 。其中一个有一个系统列表。每当选择一个系统时,我想用子系统列表填充其他组合框。我没有使用 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中的外键,它是 ID 系统。顺便说一下,我的 SelectedIndexChanged 当我调试程序时,即使我单击了组合框中的某个项目,事件也从未触发。

    1 回复  |  直到 9 年前
        1
  •  0
  •   ardatosun    9 年前

    我仔细阅读了 Items.Add 。它需要一个 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);