在实际项目中发现Trim()方法不仅仅是去空格这么简单。因为一个看似简单的空格,就可以影响到整个程序的功能和程序的效率。下面就让我把自己在项目中遇到的一些小问题以及如何解决这些问题的经过拿出来和大家共同分享一下吧:
我们想要的效果是:如果数据库中没有指或者值为空时,则将其蓝色区域的图像隐藏。否则将数据库中的值显示在蓝色区域中。
通过上图,大家明显可以看到,所显示的Solution这一个蓝色的区域中明显存在一个<br>转行,也就是读取出来了空值。这是因为在程序的代码中添加了这样的几行代码:
lblProblem.Text += iproblem.Content + "<br/>"br所在的区域放置了一个文本框,我们把从数据库中读取出来的值赋给这个文本框,如果数据库存在一条数据值,则显示一条,存在一条以上则换行显示。问题就出在这里,如果数据库里面保存了空字符串,或者是换行的字符串。则会将其取出并赋值给文本框。如此一来就达不到我们想要的效果了。我们可以通过以下代码处理:
List<EProblem> eproblemList = new List<EProblem>();
foreach (EProblem iproblem in item.EProblem)
{
if (!string.IsNullOrEmpty(iproblem.Content.Trim()))
{
eproblemList.Add(iproblem);
lblProblem.Text += iproblem.Content + "<br/>";
}
else
{
problemCount++;
}
}
#endregion
#region Cause 绑定
List<ECause> causeList = new List<ECause>();
foreach (ECause icause in item.ECause)
{
if (!string.IsNullOrEmpty(icause.Content.Trim()))
{
causeList.Add(icause);
lblCause.Text += icause.Content + "<br/>";
}
else
{
causeCount++;
}
}
#endregion
#region Solution 绑定
List<ESolution> solutionList = new List<ESolution>();
foreach (ESolution isolution in item.ESolution)
{
if (!string.IsNullOrEmpty(isolution.Content.Trim()))
{
solutionList.Add(isolution);
lblSolution.Text += isolution.Content + "<br/>";
}
else
{
solutionCount++;
}
}
if (item.EProblem.Count == problemCount && item.ECause.Count == causeCount && item.ESolution.Count == solutionCount)
{
this.tbProblemSolution.Visible = false;
}
#endregion
if (!this.h3ProcessZhuYiShiXiangJiWenTiDian.Visible&&!this.h4ZhuYiShiXiang.Visible&&!this.tbProblemSolution.Visible)
{
this.liProcessMention.Style.Add(HtmlTextWriterStyle.Display, "none");
}
#endregion
通过Trim()方法来去掉空格或者是转行,这样就可以避免出现上面的状况了。
数据库中有不为空值的时候,显示如下:
如果没有值存在的时候,显示如下;