【问题标题】:asp.net listBox text/valueasp.net listBox 文本/值
【发布时间】:2012-06-05 10:49:08
【问题描述】:

基本上,我需要用字符串填充列表框的 .Text 值,并用 int 填充它的 .Value 值。 通过这样做:

lbUsers.DataSource = new UserManagerBO().GetGlobalUserList();
lbUsers.DataBind();

这会将字符串分配给 .Value 和 .Text。

现在我知道 GetGlobalUserList() 返回一个 string[] 这就是我得到上述行为的原因,那么如何将 int 值与字符串值一起返回?也许去二维数组?然后如何将这些结果绑定到列表框?

【问题讨论】:

    标签: c# asp.net data-binding listbox


    【解决方案1】:

    选项 1 让该方法返回string[] 并为值选择SelectedIndex

    选项 2 创建一个自定义类作为 Damith 的答案。

    选项 3 Dictionary<int, string> 就足够了。

    Dictionary KeysListBox ValueDictionary ValuesListBox Text

    说这是你的方法返回的字典

    //Adding key value pair to the dictionary
    Dictionary<int, string> dStudent = new Dictionary<int, string>();
    dStudent.Add(0, "Eena");
    dStudent.Add(1, "Meena");
    dStudent.Add(2, "Deeka");
    dStudent.Add(3, "Tom");
    dStudent.Add(4, "Dick");
    dStudent.Add(5, "Harry");
    dStudent.Add(6, "Yamla");
    dStudent.Add(7, "Pagla");
    dStudent.Add(8, "Dewana");
    dStudent.Add(9, "Guru");
    dStudent.Add(10, "Sholay");
    

    第 2 步:

    现在是时候将字典对与您的列表框绑定了。以下代码绑定到列表框。

    //binding to the list
    lst.DataTextField = "Value";
    lst.DataValueField = "Key";
    lst.DataSource = dStudent;
    lst.DataBind();
    

    【讨论】:

    • 谢谢。所以我应该从 GetGlobalUserList() 方法返回 Dictionary 而不是 string[] 吗?然后如何将其绑定到 .Value 和 .Text?
    • 那行得通,我只需要将 Key 与 Value 交换即可显示字符串而不是整数。再次感谢
    • @sd_dracula:请记住一件事,键是唯一的,而值可以在字典中重复。
    • 应该没问题,因为我提供的键在表中是唯一的(主键)。
    【解决方案2】:

    使用用户属性创建自定义类。这可以在您处理全局用户时重复使用

    public class CustomClass()
    {
        public int ID { get; set; }
        public int Name  { get; set; }
    }
    

    GetGlobalUserList()返回CustomClass对象的集合,你需要改变GetGlobalUserList方法的签名和逻辑。你这样做的人,

    lbUsers.DataSource = new UserManagerBO().GetGlobalUserList();
    

    设置列表框的DataTextFieldDataValueField

    lbUsers.DataTextField  = "Name";
    lbUsers.DataValueField = "ID";
    lbUsers.DataBind();
    

    【讨论】:

    • .DisplayMember 似乎对 asp:listbox 无效
    • @sd_dracula 是的,应该改成DataTextField
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2011-07-08
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多