1
我想填充两个不同的列表,我正在从数据库中读取两个不同的列表。这里是我的代码:只有两个列表框中的一个正在填充按钮点击
private void StartSchedule_Click(object sender, EventArgs e)
{
string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\A2 Computing\C# Programming Project\TriHard.accdb";
string SelectQuery = "SELECT Time.AthleteID, Athlete.AthleteName, Time.EventTime, Event.EventDistance FROM Event INNER JOIN (Athlete INNER JOIN [Time] ON Athlete.[AthleteID] = Time.[AthleteID]) ON Event.[EventID] = Time.[EventID];";
OleDbConnection Connection = new OleDbConnection(ConnectionString);
OleDbCommand Command = new OleDbCommand(SelectQuery, Connection);
Command.Connection.Open();
OleDbDataReader Reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
PaceCalculator pace = new PaceCalculator();
List<PaceCalculator> Distancelist = new List<PaceCalculator>();
while (Reader.Read())
{
pace = new PaceCalculator();
pace.Distance = (int)Reader["EventDistance"];
Distancelist.Add(pace);
}
listBox1.DisplayMember = "Distance";
listBox1.DataSource = Distancelist;
List<PaceCalculator> TimeList = new List<PaceCalculator>();
while (Reader.Read())
{
pace = new PaceCalculator();
pace.Time = (string)Reader["EventTime"];
TimeList.Add(pace);
}
listBox2.DisplayMember = "Time";
listBox2.DataSource = TimeList;
}
当我按下按钮时,listBox1被填充,但listBox2不是。我该如何解决这个问题,因为两个盒子都是相邻的?
我认为你缺少一条线。在该代码中,第二个列表框将从零开始读取(因为前一个已经读取了所有内容)。 – BradleyDotNET 2015-02-05 18:31:34
@BradleyDotNET我将如何去改变它? – 2015-02-05 18:32:18
将pace.Time和TimeList放在第一个while循环中。就是这样,或者你用另一个Command对象创建另一个Reader。您需要使用{}块来处理它们。现在,你不关闭你的数据库连接等。 – LarsTech 2015-02-05 18:33:01