0

通过SELECT查询,我从数据库中获取了一些数据(例如用户)。我把所有的数据放在一个List<User>.

List<User> listUsers = new List<User>();

要将这些数据加载到列表框中,我会这样做:

Foreach(User u in listUsers)
{
     listbox.Items.Add(u.name + " " + u.lastname)
}

我想做的是下一个:

当有人单击其中一个列表项(在其中一个用户上)时,我的 c# 表单应用程序需要从所选用户获取用户 ID(来自 dbs)。

string name = listbox.SelectedItem.ToString();

我不能这样做:

SELECT UserID FROM Person WHERE Username = name;

因为SelectedItem将包含带有空格的姓名和姓氏。

有人能帮我吗?

谢谢

4

2 回答 2

3

你为什么不在课堂上介绍一个ID属性User?您也可以将该属性与其他数据一起填充。然后,您还可以覆盖ToString()您的类用户中的方法,这将帮助您显示姓名和姓氏。您可以添加类的实例User而不是字符串,并将选择直接添加到User您拥有ID. 检查代码:

public class User
{
       public string Name { get; set; }
       public string LastName { get; set; }
       public int ID { get; set; }
       public override string ToString()
       {
             return Name + " " + LastName;
       }
       ...
}

//fill the listBox
foreach(User u in listUsers)
{
       listbox.Items.Add(u);
}

//get the celected User

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
       ListBox lb = (ListBox)sender;
       User user = (User)lb.Items[lb.SelectedIndex];
       MessageBox.Show(user.ID.ToString());
}
于 2013-06-15T18:50:11.297 回答
0

在填充列表框时,进行查询以获取 UserID 列以及用户名、用户姓氏。

创建一个代表列表中每个项目的类,例如

public class UserInfo
{
   public string DisplayName {get; set;}
   public int UserID {get; set;}
}

使其listUsers成为List<UserInfo>类型。将表中的数据填充到列表中时,请执行以下操作

while (myUserData.Read())
{
   listUsers.Add(new UserInfo() {DisplayName = myUserData["DisplayName"] , UserID = myUserData["UserID")})
}

发布列表填充,用于DataSource绑定数据,DisplayMember属性到DisplayName属性,ValueMember属性到UserID属性。

查看页面以获取有关如何使用数据绑定的示例以获取详细信息。

于 2013-06-15T18:44:27.253 回答