我的应用程序遇到了一些问题,我连接了数据库并且已经显示了数据库中第一行的值,但是我需要让数据库遍历每一行并相应地显示它们之前在那里,理想情况下被计时器推迟了
我认为这是正确的方法,但它似乎不正确,因为现在它没有显示任何东西,并给了我一个System.NullReferenceException。我试图解决这个问题,但似乎没有运气。如果你可以推荐一些东西可以阅读,那将是非常有帮助的,因为我的具体问题在互联网上看不到很多
任何帮助都会很好,第一次在这里张贴,如果事情的格式错误,那就很抱歉。
private void FillInTextFields(DataTable table, int ind)
{
foreach(DataRow dr in table.Rows)
{
foreach(var item in dataRow.ItemArray)
{
dataRow = table.Rows[ind];
txtNHSNumber.Text = dataRow.ItemArray.GetValue(0).ToString();
txtFirstName.Text = dataRow.ItemArray.GetValue(1).ToString();
txtLastName.Text = dataRow.ItemArray.GetValue(2).ToString();
txtTimeDate.Text = dataRow.ItemArray.GetValue(3).ToString();
txtHeartRate.Text = dataRow.ItemArray.GetValue(4).ToString();
txtTemp.Text = dataRow.ItemArray.GetValue(5).ToString();
txtReps.Text = dataRow.ItemArray.GetValue(6).ToString();
txtDia.Text = dataRow.ItemArray.GetValue(7).ToString();
txtSys.Text = dataRow.ItemArray.GetValue(8).ToString();
}
}
}
答案 0 :(得分:1)
foreach(var item in dataRow.ItemArray)
应该是:
foreach(var item in dr.ItemArray)
可以在循环结束时进行睡眠,以便在返回顶部之前进行延迟。
答案 1 :(得分:0)
看来你有一些问题。首先,你的内循环似乎没有必要。其次,外部循环遍历所有行,即使您专门将行索引传递给方法。最后,似乎你在分配之前使用了你的“dataRow”变量,尽管我必须看到更多的代码才能确定。考虑一下:
private void FillInTextFields(DataTable table, int ind)
{
dataRow = table.Rows[ind];
txtNHSNumber.Text = dataRow.ItemArray.GetValue(0).ToString();
txtFirstName.Text = dataRow.ItemArray.GetValue(1).ToString();
txtLastName.Text = dataRow.ItemArray.GetValue(2).ToString();
txtTimeDate.Text = dataRow.ItemArray.GetValue(3).ToString();
txtHeartRate.Text = dataRow.ItemArray.GetValue(4).ToString();
txtTemp.Text = dataRow.ItemArray.GetValue(5).ToString();
txtReps.Text = dataRow.ItemArray.GetValue(6).ToString();
txtDia.Text = dataRow.ItemArray.GetValue(7).ToString();
txtSys.Text = dataRow.ItemArray.GetValue(8).ToString();
}
您只需要使用要显示的特定索引调用此方法。
您还可以删除ItemArray.GetValue内容,然后继续使用:
private void FillInTextFields(DataTable table, int ind)
{
dataRow = table.Rows[ind];
txtNHSNumber.Text = dataRow[0].ToString();
txtFirstName.Text = dataRow[1].ToString();
txtLastName.Text = dataRow[2].ToString();
txtTimeDate.Text = dataRow[3].ToString();
txtHeartRate.Text = dataRow[4].ToString();
txtTemp.Text = dataRow[5].ToString();
txtReps.Text = dataRow[6].ToString();
txtDia.Text = dataRow[7].ToString();
txtSys.Text = dataRow[8].ToString();
}
答案 2 :(得分:0)
不确定为什么要在此方法中传递int ind
,不需要它。
private void FillInTextFields(DataTable table)
{
txtNHSNumber.Text = table.Rows[0].ItemArray[0];
txtFirstName.Text = table.Rows[0].ItemArray[1];
txtLastName.Text = table.Rows[0].ItemArray[2];
txtTimeDate.Text = table.Rows[0].ItemArray[3];
txtHeartRate.Text = table.Rows[0].ItemArray[4];
txtTemp.Text = table.Rows[0].ItemArray[5];
txtReps.Text = table.Rows[0].ItemArray[6];
txtDia.Text = table.Rows[0].ItemArray[7];
txtSys.Text = table.Rows[0].ItemArray[8];
}