Split()函数没有给出输出

时间:2012-09-15 11:44:45

标签: c# asp.net

代码中有什么问题..?它不起作用!!

实际上我想从数据库的一个字段中拆分条目..其中的项目用逗号分隔..

这就是我在做什么。

string str = dataSet.Tables[0].Rows[0]["Ingredients"].ToString();

string[] split = str.Split(',');
IList<string> lblListItemIngredients  = new List<string>();
foreach (string item in split)
{
  lblListItemIngredients.Add(item);
}

在我的aspx页面中,

<ul>
<li>
<asp:label id="lblListItemIngredients" runat="server></asp:Label>
</li>
</ul>

但是输出没有到来,但是在调试模式下,我可以看到字符串正在分裂..什么错了?

4 个答案:

答案 0 :(得分:3)

您必须以某种方式将列表中的数据提供给控件。这不会神奇地发生,因为你给变量的名称与控件的id相同。

实际上,您应该为变量使用不同的名称,否则它将遮蔽已添加到页面对象的属性。

如果要创建HTML列表,仅在一个列表项中放置标签是不够的,这不会为每个字符串创建一个列表项。您可以使用转发器:

<ul>
  <asp:Repeater id="lblListItemIngredients" runat="server">
    <ItemTemplate>
      <li><%# Container.DataItem %></li>
    </ItemTemplate>
  </asp:Repeater>
</ul>

您不必为数据源创建列表,数组工作正常:

string str = dataSet.Tables[0].Rows[0]["Ingredients"].ToString();
string[] split = str.Split(',');

lblListItemIngredients.DataSource = split;
lblListItemIngredients.DataBind();

答案 1 :(得分:1)

当您使用asp:label之类的内容时,您在页面标记中使用了asp:ListBox控件。从代码中消除IList<String>声明。

将更多字符串数组添加到ListBox的更好方法如下:

首先,在您的标记中,将不正确的控件引用更改为ListBox:

    <asp:ListBox id="IngredientList" runat="server"></asp:ListBox>

其次,在源代码中,简化了添加:

    string str = dataSet.Tables[0].Rows[0]["Ingredients"].ToString();

    string[] ingredients= str.Split(',');
    IngredientList.Items.AddRange(ingredients);

此方法消除了markkup中不正确的标签控制,并且从后面的代码中消除了原始版本中的手动迭代和不需要的IList声明。希望这会有所帮助。

答案 2 :(得分:1)

Guffa已经爆炸了,但仅仅是为了完整性,并且因为它符合你一如既往的精神: - )

如果您将商标更新为:

   <ul>
   <asp:Literal id="literalIngredients" runat="server" />
   </ul>

(老实说,如果在foreach循环中使用yourLabel.Text += item;,你的原始代码会有更多或更少的工作,正如Guffa所说,调用变量和控件同名不是一个好主意)

并将您的代码更新为

    string str = dataSet.Tables[0].Rows[0]["Ingredients"].ToString();

    string[] split = str.Split(',');
    // not needed IList<string> lblListItemIngredients  = new List<string>();
    foreach (string item in split)
    {
      literalIngredients.Text += string.Format("<li>{0}</li>",item);
    }

答案 3 :(得分:0)

你应该使用asp:ListBox而不是Label