使用dt.Rows在标签中显示多行

时间:2017-06-20 06:52:21

标签: c# ms-access-2016

我在带有标签的表格中使用if-else显示不存在的行时遇到问题。

我目前使用此parentsID(以New会话登录)与两个孩子(两行)登录,dt.Rows[0]和{{1}没有问题除了我dt.Rows[1]的{​​{1}}时出现错误,对于有三个孩子的dt.Rows[2],没有错误。同样,如果我使用只有一个Error: System.IndexOutOfRangeException: There is no row at position 2.的{​​{1}}登录,则会显示parentsID

我该如何解决这个问题?我的英语不好,抱歉,如果有语法错误。

我有一个名为parentsID的表,其中包含所有人。所有行都有child(他们的用户名)以及There is no row at position 1.。一些family可以是其他childID的{​​{1}}。

parentsID

1 个答案:

答案 0 :(得分:1)

使用for循环迭代DataTable内容可能会阻止此示例IndexOutOfRangeException这样的麻烦:

if (myReader3.HasRows)
{
     DataTable dt = new DataTable();
     dt.Load(myReader3);

     for (int i = 0; i < dt.Rows.Count; i++)
     {
         // label assignments here
     }
}

根据dt.Rows.Count值,如果i达到最大计数值,迭代会自动停止,因此dt.Rows[i]调用不会抛出异常。

然而,正如Jon {s}在loop through an array of given labels帖子中提到的那样,即使借助数组索引(例如{ 1, 5, 7 } childID,也很难找出给定设置的特定值的标签。 } 标签)。到目前为止,我正在努力迭代DataTable内容,然后根据需要将值分配到不同的标签中:

if (myReader3.HasRows)
{
     DataTable dt = new DataTable();
     dt.Load(myReader3);

     for (int i = 0; i < dt.Rows.Count; i++)
     {
         if (!DBNull.Value.Equals(dt.Rows[i]["childID"]))
         {
             if (i == 0)
             {
                 label1.Text = dt.Rows[i]["childID"].ToString();
                 label2.Text = "$" + Convert.ToDecimal(dt.Rows[i]["childNetWorth"]).ToString("N2");
                 label3.Text = dt.Rows[i]["childName"].ToString();
             }
             else if (i == 1)
             {
                 label5.Text = dt.Rows[i]["childID"].ToString();
                 label6.Text = "$" + Convert.ToDecimal(dt.Rows[i]["childNetWorth"]).ToString("N2");
                 label7.Text = dt.Rows[i]["childName"].ToString();
             }
             else if (i == 2)
             {
                 label9.Text = dt.Rows[i]["childID"].ToString();
                 label10.Text = "$" + Convert.ToDecimal(dt.Rows[i]["childNetWorth"]).ToString("N2");
                 label11.Text = dt.Rows[i]["childName"].ToString();
             }
         }
         else
         {
             if (i == 0)
             {
                 label1.Text = "-ID-";
                 label2.Text = "-";
                 label3.Text = "-";
             }
             else if (i == 1)
             {
                 label5.Text = "-ID-";
                 label6.Text = "-";
                 label7.Text = "-";
             }
             else if (i == 2)
             {
                 label9.Text = "-ID-";
                 label10.Text = "-";
                 label11.Text = "-";
             }
         }
     }
}

欢迎任何建议。