我希望有人能提供帮助。但是,每当我运行我的代码并尝试查看highscore时,我在列表框中返回的所有内容就是System.Data.DataRowView

谁能看到原因?

代码:

MySqlConnection myConn = new MySqlConnection(connStr);

string sqlStr = "SELECT CONCAT(Name, ' ', Score) as NameAndScore " +
                "FROM highscore ORDER BY Score DESC";

MySqlDataAdapter dAdapter = new MySqlDataAdapter(sqlStr, myConn);
DataTable dTable = new DataTable();
dAdapter.Fill(dTable);
dAdapter.Dispose();
lstNames.DisplayMember = "NameAndScore";
lstNames.DataSource = dTable;

最佳答案

即使设置了列表框的DisplayMemberValueMembers,我也总是要处理此问题。

您当前的代码正确无误,并且可以正常工作,如果您需要访问dTable中任何列的当前选定项目值,则可以让他们这样做:

DataRowView drv = (DataRowView)lstNames.SelectedItem;
String valueOfItem = drv["NameAndScore"].ToString();

我想要获取整个DataRowView的原因是,如果您有更多的列,您仍然可以访问它们的值并对其进行所需的操作。

10-04 12:04