为什么字符串会失去价值?

时间:2014-05-22 15:24:10

标签: c#

我有一个名为strClientNumber的字符串,用于捕获循环中的值,但在循环外,字符串在消除赋值对象后变为NULL。我错过了什么?

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");

    foreach (XmlNode varUser in nodelist)
    {
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            strClientNumber = varUser.InnerText;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td></tr>\n"));
        }
    }
}

if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + strClientNumber + "</td><td><input name=\"\" type=\"checkbox\" /></td><td><input name=\"\" type=\"checkbox\" /></td></tr>\"\n"));
}

2 个答案:

答案 0 :(得分:0)

如果您查看评论,您会看到海报接受了讨论中的提示是正确的;但是,海报答案中的解决方案很可能导致不正确的行为。下面的解决方案最有可能产生海报正在寻找的结果,假设客户编号是提前知道的,并且不是空的。

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");

    foreach (XmlNode varUser in nodelist)
    {
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td></tr>\n"));
        }
    }
}

if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + clientnumber + "</td><td><input name=\"\" type=\"checkbox\" /></td><td><input name=\"\" type=\"checkbox\" /></td></tr>\"\n"));
}

答案 1 :(得分:0)

我是这样的菜鸟......谢谢大家。

bool blnAbsent = true;
string strClientNumber = "";
foreach (SPListItem item in varCustomerNumbers)
{
    XmlDocument xml = new XmlDocument();
    xml.LoadXml(item["CustomerNumbers"].ToString());
    XmlNodeList nodelist = xml.GetElementsByTagName("user");

    foreach (XmlNode varUser in nodelist)
    {
        strClientNumber = clientnumber;
        if (clientnumber == varUser.InnerText)
        {
            blnAbsent = false;
            this.Controls.Add(new LiteralControl("   <tr><td>" + varUser.InnerText + "</td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["parent"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td><td><input name=\"\" type=\"checkbox\"\n"));
            if (varUser.Attributes["national"].InnerText == "true")
                this.Controls.Add(new LiteralControl(" checked\n"));
            this.Controls.Add(new LiteralControl("/></td></tr>\n"));
        }
    }
}

if (blnAbsent == true)
{
    this.Controls.Add(new LiteralControl("   <tr><td>" + strClientNumber + "</td><td><input name=\"\" type=\"checkbox\" /></td><td><input name=\"\" type=\"checkbox\" /></td></tr>\n"));
}