网页上有多个标签

时间:2012-09-19 08:51:04

标签: c# asp.net

我有两个数组,一个是我需要在网页上的标签上显示的值,另一个是标签的位置。我在网页上有54个标签,标签名称为“lb1,lb2,... lb54”

假设

int [] values = {21,22,18,16,17.........22}

int [] positions = {12, 1,3,5,54,.........8}

现在我需要在具有相应位置的标签上显示“值”。 position数组描述了赋值的顺序。所以标签12应该有21,标签1应该有22,依此类推......

我通过运行循环尝试了这个并且无法得到它..

for (int j=1;j<=54; j++)
{
    getLabelID("label" + positions [j].toString).Text = Convert.ToString(values[1]);
}

4 个答案:

答案 0 :(得分:0)

First Array是基于0索引的,因此你的循环应该从0开始到<54或数组长度

并且没有toString属性来获取字符串,有ToString()方法来获取字符串值。因此positions[j].toString将为positions[j].ToString()

并且您始终使用values[1]从值数组中获取第二个元素,需要将其更改为values[j]

你的循环应该像

for (int j=0;j<positions.Length; j++)
{
    getLabelID("label" + positions[j].ToString()).Text = Convert.ToString(values[j]);
}

答案 1 :(得分:0)

你在ToString()末尾缺少括号。尝试:

for (int j=1;j<=54; j++)
{
    getLabelID("label" + positions [j].ToString()).Text = Convert.ToString(values[1]);
}

答案 2 :(得分:0)

您可以尝试使用此代码 - 基于LINQ运算符

var controls = this.Controls.OfType<Label>().ToList();
foreach(Label item in controls)
{
     var index = Convert.ToInt32(item.Id.ToString().Replace("label","").Trim());
     var text =  Convert.ToString(values[index]);
     System.Console.WriteLine(text);
     item.Text =  text;
}

答案 3 :(得分:0)

如果你不想让“54”硬编码,你可以这样做:

positions.ToList().ForEach(
  p=>getLabelID(String.Format("label{0}",p)).Text=values[p].ToString()
);