2013-03-15 60 views
-3

我想循环我的列表框,以便显示一个名称,然后显示它旁边的分数。在列表框中循环

有没有办法做到这一点?

MySqlConnection myConn = new MySqlConnection(connStr); 

DataTable dTable = new DataTable(); 

string squery = "SELECT * FROM highscore"; 
MySqlDataAdapter dAdapter = new MySqlDataAdapter(squery, myConn); 

dAdapter.Fill(dTable); 
dAdapter.Dispose(); 

lstNames.DataSource = dTable; 
lstNames.DisplayMember = "Name"; 
lstNames.ValueMember = "Name"; 
+0

,对不对? – Sinatr 2013-03-15 11:14:35

+0

你可以参考这个http://stackoverflow.com/questions/380451/how-do-i-do-i-loop-through-items-in-a-list-box-and-then-remove-that-item – user2168290 2013-03-15 11:14:43

+0

你不能在SQL中执行它吗? “SELECT DisplayName = ...,* FROM highscore”然后绑定到DisplayName ... – 2013-03-15 11:15:18

回答

0

试试这个

for (int i = 0; i < lstFields.Items.Count; i++) 
     { 
      var item = lstNames.Items[i] ; 
      // Do with current item now 
     } 
1

而是通过循环,并在列表框中添加项目,你可以从你的查询关键词,比如获得格式化/连接的结果:

对于MySQL,你需要使用CONCAT方法进行连接。

SELECT CONCAT(`Name` + ' ' + `Score`) AS `NAMESCORE`, * from highscore; 

然后:

lstNames.DisplayMember = "NAMESCORE"; 
lstNames.ValueMember = "NAMESCORE"; 
你想2列在列表框中显示`name`和`score`
+0

感谢您的回答,但我已经尝试了这种方法,并且我无法让它正常工作,所以我已经恢复到了我将首先尝试的方式,我只会在列表框中返回'System.Data.Datarowview' – 2013-03-15 11:16:55

+0

@CainNeal,错过了你正在使用MySql,你需要调用CONCAT方法来连接列,尝试编辑后的查询。 – Habib 2013-03-15 11:18:10

+0

@CainNeal放置了一个断点并查看VS中Data Visualizer中的数据表,查看您获得的连接列。 – Habib 2013-03-15 11:23:38