【问题标题】:C#: assigning text and value to combobox memberC#:将文本和值分配给组合框成员
【发布时间】:2011-02-12 03:55:42
【问题描述】:

我想我曾经知道如何做到这一点,但我现在无法弄清楚。我正在尝试在具有关联值的组合框中分配一个列表项。原因是因为我使用数据库中的名称列表填充它,但我希望它将主键存储为一个值,以便我可以在后续查询中直接调用它。例如,您从主管列表中选择一个名称,该名称将把该主管的主键存储在一个变量中,以便在将列出所有分配了该键的员工作为主管的事件中使用。有道理?很标准。这就是我只加载名称的文本部分的内容:

查询:

static string sql = "select rtrim(elname),rtrim(efname) from employee where pos_id = 2";

填充列表的代码:

try
            {
                conn.Open();
                //determine how many records affected/returned              
                int records = dbAdapter.Fill(results); //fills the datatable with results and returns the number of records

                if (records > 0)
                {
                    //do something with the results (stored in the datatable)
                    foreach (DataRow dr in results.Rows)
                    {
                        cboSupervisor.Items.Add(dr[0] + ", " + dr[1]);

                    }
                    cboSupervisor.Sorted = true;
                }
            }
            catch { }

这会用姓氏、名字填充下拉列表

【问题讨论】:

    标签: c# text combobox valuemember


    【解决方案1】:

    最好的方法是创建一个包含你想要显示的信息和你想要保留的信息的类,然后专门化 ToString():

        public class ComboItem : object
        {
            protected String    name;
            ....
            ....
            protected int   id;
    
            public ComboItem(String name, int id)
            {
                this.name= name;
    
                this.id = id;
            }
    
            public override string ToString()
            {
                return name;
            }
    
        };
    

    【讨论】:

    • 就像在网络上有一个选择框一样,它显示一件事,但保存一个值。我想做同样的事情
    【解决方案2】:

    能否使用 ComboBoxItem,使用 Content 属性设置名称,使用 Tag 属性设置 Value?然后将 ComboBoxItem 添加到 ComboBox 的 Items 集合中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多