我在带有标签的表格中使用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
答案 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 = "-";
}
}
}
}
欢迎任何建议。