1

我今天似乎失去了它。谁能帮我找到我在这里做错了什么:

1. for (int y = 0; y < 5; y++)
2. {
3.      IDataReader getLineInfo = DB.GetRS("Select LineText From TIF Where SCRID ='" + scRID + "' AND LineNum='" + y + "'");
4.      if (getLineInfo.Read())
5.      {
6.            string[] lineText = new string[y];
7.            lineText[y] = (string)getLineInfo["LineText"];
8.
9.            ((Label)item.FindControl(string.Format("lbl{0}", y))).Text = "<a href='" + lineText[y] + "' target='_blank'> Link</a>";
10.     }
11.     getLineInfo.Dispose();
12.     getLineInfo.Close();
13. }

我在第 9 行得到错误。我最初的 'y' 从 1 开始,因为没有 lineNum == 0 .. 但我认为由于数组以 0 开头,所以我在那里搞砸了。但这并没有解决我的问题。如果有人可以帮助我了解我不是什么,将不胜感激。此页面上也没有用户输入,因为我知道使用 select 语句的整个 IDataReader 可能很糟糕。

如果需要任何其他信息,我可以写进去,感谢任何可以提供帮助的人

4

4 回答 4

3
string[] lineText = new string[y];  // array 0 .. y-1
lineText[y] = ...;                  // y = 1 element too far

此外,lineText在循环内本地创建,您可以简单地替换string[] lineTextstring lineText并忘记y.

如果您认为需要y,则此代码中还有其他错误/缺失。

于 2012-09-19T19:40:06.297 回答
2

为什么不只使用字符串而不是字符串数组?

string lineText = (string)getLineInfo["LineText"];

((Label)item.FindControl(string.Format("lbl{0}", y))).Text = "<a href='" lineText + "' target='_blank'> Link</a>";
于 2012-09-19T19:43:56.787 回答
1

有充分的理由吗

string[] lineText = new string[y];

在循环内?`

而且,如果您分配一个“y”元素数组,那么访问索引“y”处的元素势必会引发异常。在“y”元素的数组中,最后一个元素位于索引“y-1”处(从 0 开始)。

于 2012-09-19T19:42:40.243 回答
0

你需要像这样声明你的数组

 string[] lineText = new string[y+1];
于 2012-09-19T19:40:15.157 回答