2

试图从一串零件名称中列出一个列表。它正在跳过显示除列表中最后一个名称之外的所有名称。为什么要这样做?有没有更好的方法来做到这一点?

我的代码背后

    List<string> Ta1PartNumbers = ta1input.Split('\n').ToList<string>(); //Trying to split at the line break.. Would this be the proper way to do it?

    foreach (string Tpartnumber in TramPartNumbers)
    {
        Div1.InnerText = (Tpartnumber);
    }


列表是这样的:
Part_numbers
1017foo
1121bar
等。

4

4 回答 4

5

您正在重置循环的每次迭代的 innerText 值,因此它只保留最后一个。尝试使用+=运算符附加

foreach (string Tpartnumber in TransimPartNumbers)
{
    Div1.InnerHtml += Tpartnumber + "<br />";
}
于 2012-06-05T00:35:57.087 回答
1

我犯的这个错误比我应该犯的要多。尝试:

Div1.InnerText = "";
foreach (string Tpartnumber in TransimPartNumbers)
{
   Div1.InnerText += (Tpartnumber);
}

您基本上每次都覆盖以前的值。

于 2012-06-05T00:38:53.687 回答
1

我会避免在不需要的地方使用 List 。改用这种拆分方法,但我认为你想要 \r\n... 和其他海报一样,你需要 += 追加,而不是 + 更新。

string[] lines = Regex.Split(ta1input, "\r\n");

foreach (string line in lines)
{
    Div1.InnerText += Tpartnumber;
}
于 2012-06-05T00:40:47.477 回答
0

循环的每次迭代都将InnerTextof替换Div1为当前字符串。这就是为什么你只得到最后一个字符串,你写了所有以前的字符串。

但是,为什么还要拆分字符串呢?如果您只想将所有字符串写入 div,您可以这样做:

Div1.InnerText = ta1Input;

你想要什么作为最终的 HTML?

Part_numbers<br/>
1017foo<br/>
1121bar<br/>
etc..<br/>

或者

<div>Part_numbers</div>
<div>1017foo</div>
<div>1121bar</div>
<div>etc..</div>

或者是其他东西?就个人而言,我更喜欢后者。我会做这样的事情:

string[] Ta1PartNumbers = ta1input.Split('\n');

foreach (string Tpartnumber in Ta1PartNumbers)  
{
    var div = new HtmlGenericControl("div");
    div.InnerText = Tpartnumber;
    Div1.Controls.Add(div);
}
于 2012-06-05T00:43:16.900 回答