我有一个带有节点的树视图。我正在实现通过树视图节点的搜索。一旦找到匹配的节点,则应更改节点颜色。它工作正常,但问题是在先前搜索的节点中搜索新节点时颜色也会改变。任何帮助将不胜感激。谢谢。
protected void btn_search_Click(object sender, EventArgs e)
{
try
{
FindNodesByString();
}
catch { }
}
private void FindNodesByString()
{
foreach (TreeNode currentNode in tv_AccountView.Nodes)
{
FindNodeByString(currentNode);
}
}
private void FindNodeByString(TreeNode parentNode)
{
FindMatch(parentNode);
foreach (TreeNode currentNode in parentNode.ChildNodes)
{
//currentNode.Text = currentNode.Text;
FindMatch(currentNode);
FindNodeByString(currentNode);
}
}
private void FindMatch(TreeNode currentNode)
{
if (currentNode.Text.ToUpper().Contains(txt_searchbyname.Text.ToUpper()))
{
currentNode.Expand();
currentNode.Text = "<div style='background-
color:#ffffcc;color:#ff9900;'>" + currentNode.Text + "
</div>";
}
else
{
currentNode.Text = currentNode.Text;
// currentNode.Collapse();
// currentNode.ShowCheckBox = false;
}
}
答案 0 :(得分:0)
找到节点后,您会将其文本设置为带有颜色的html。如果找不到html,则永远不会删除它。
else
{
currentNode.Text = currentNode.Text; //need to remove the HTML tags (if any) here
// currentNode.Collapse();
// currentNode.ShowCheckBox = false;
}
要完成删除HTML的操作,您可以:
要执行简单的正则表达式,它看起来像这样:
else
{
//remove the HTML tags (if any) here
currentNode.Text = Regex.Replace(currentNode.Text, "<.*?>", String.Empty);
// currentNode.Collapse();
// currentNode.ShowCheckBox = false;
}