각 노드에 사용자 지정 속성을 추가 할 수 있도록 TreeNode 클래스를 확장해야합니다 (WebForms TreeNode에 Tag 속성이 없음).사용자 지정 TreeView/TreeNode 만들기
CustomTreeNode selectedNode = (CustomTreeNode)TreeView.SelectedNode;
:
CustomTreeNode node = new CustomTreeNode(1, "CustomType");
treeView.Nodes.Add(node);
그때 다음을 수행 캐스팅 예외를 얻을 것이다 : 나는 CustomTreeNode를 생성하고 트 리뷰에 추가하면
public class CustomTreeNode : TreeNode
{
public CustomTreeNode()
{
}
public CustomTreeNode(int nodeId, string nodeType)
{
NodeId = nodeId;
NodeType = nodeType;
}
public string NodeType { get; set; }
public int NodeId { get; set; }
}
: 그래서 내 CustomTreeNode입니다 TreeView는 CustomTreeNode가 아닌 TreeNode를 반환하기 때문입니다.
일부 읽기가 완료되었으며 TreeView 클래스를 확장하고 TreeNode 대신 CustomTreeNode를 반환하는 CreateNode() 메서드를 재정의해야합니다.
public class CustomTreeView : TreeView
{
protected override TreeNode CreateNode()
{
return new CustomTreeNode();
}
}
문제는, 그러나 CreateNode()는 CustomTreeNode 클래스의 빈 생성자를 호출해야 할 필요가 있으므로, 인수를 고려하지 않습니다이다 : 그래서 나는이를 만들었습니다. 그래서 위의 CustomTreeNode를 만들었을 때, 빈 생성자가 아무 값도없이 노드를 반환하기 때문에 CustomTreeView에서 다시 가져올 때 nodeId와 nodeType 값이 손실되었습니다.
도움을 주시면 감사하겠습니다.
고맙습니다. 매우 유용하고 유용합니다. 그것은 완벽하게 작동했습니다. – pedroAx
@Tung 이것은 훌륭한 글입니다. 동시에 나는이 링크를 읽고 있었다 : http://support.microsoft.com/kb/2527108. 귀하의 솔루션을 구현했지만이 오류가 발생했습니다 :'오류 6 'System.Web.UI.WebControls'네임 스페이스에 'CustomTreeView'형식 또는 네임 스페이스 이름이 없습니다. aspx 코드에 뭔가를 추가해야합니까? – Ninita
@Ninita 사실 예제의 버그입니다. 태그 접두사는 Page Directive를 통해 등록해야합니다. 만약 당신의 컨트롤이 네임 스페이스'Bar' 안에있는'Foo'라는 어셈블리에 정의되어 있다면,'Register' 지시자에서'Assembly = "Foo"'와'Namespace = "Bar"'를 설정할 것입니다.예제를 업데이트했습니다. – Tung