2011-10-06 5 views
0

사용자에게 문자열 목록을 표시해야합니다. 사용자는 여러 문자열을 선택할 수 있습니다. 특정 문자열 세트가 선택되면 각 문자열 옆에 텍스트 상자가 나타납니다.asp.net : treeview - 체크 된 경우 텍스트 상자 표시?

나는 각 노드가 문자열 중 하나 인 TREEVIEW를 사용자에게 보여주고 싶습니다. 상자를 선택하여 원하는 모든 문자열을 선택합니다.

문제 : 사용자가 특정 확인란을 선택하면 입력란에 GET 입력이 필요합니다.

질문 : 어떻게 사용자로부터 트리 뷰로 문자열 입력을받을 수 있습니까?

+0

웹 페이지에서 유일하게 트리 뷰를 언급 했습니까? 다른 곳에 배치하지 않는 것이 좋습니다. 또한 ListView가이 작업 또는 ListBox에 더 적합 할 것입니다. – Bastardo

+0

@ AteşGÜRAL : 제안에 감사하지만 사용자가 편집 할 수 있습니까? –

+0

글쎄, 그 텍스트 상자 (나타납니다)를 사용할 수 있습니다. 그 텍스트 상자가 뭔가 다른 경우에도 listbox의 selectedItem이 변경된 후 ListBox의 selectedItem을 가져 오는 상수 텍스트 상자를 사용할 수 있습니다. 버튼을 클릭하고 저장하십시오. 나는이 일을 내 프로젝트의 일부로하고 있습니다. 나는 ListBox 또는 ListView를 제안하는 이유 인 분류 된 데이터를 위해 TreeView가 작성되었다고 생각합니다. – Bastardo

답변

2

TreeView는 기본적으로 TextBoxes를 지원하지 않습니다. 클라이언트 측 텍스트 상자를 만들고 <asp:HiddenField />에 값 매핑을 직렬화하는 JavaScript 솔루션을 사용할 수 있습니다. 희망이 도움 시작을

var text = TreeViewTextValues.Value.Split('&').Select(s => Server.UrlDecode(s)); 
// text.ElementAt(n) maps to MyTreeView.CheckedNodes[n] 

테스트되지 않은 :하지만,

<asp:TreeView runat="server" 
    ID="MyTreeView" 
    ShowCheckBoxes="All" 
    NodeStyle-CssClass="node"> 
    ... 
</asp:TreeView> 
<asp:Hidden runat="server" ID="TreeViewTextValues" /> 

일부 jQuery를 :

$(".node :checkbox").click(function (e) { 
    var node = $(this).closest(".node"); 
    if (this.checked) { 
     $("<input/>").addClass("nodeTextBox").appendTo(node); 
    } 
    else { 
     node.find("input.nodeTextBox").remove(); 
    } 
}); 
$("form").submit(function (e) { 
    var nodeText = $("input.nodeTextBox").map(function() { 
     return encodeURIComponent(this.value); 
    }); 
    $("input[type=hidden][id$=TreeViewTextValues]").val(nodeText.join("&")); 
}); 

일부 C#을

은 트 리뷰와에 HiddenField을 설정합니다.

관련 문제