2012-07-10 4 views
1

저는이 작업을 꽤 오랫동안 해왔으며 문제를 해결하기 위해 아무것도 찾지 못했습니다. 노드를 선택하면 해당 노드의 값이 텍스트 상자에 채워지 길 원합니다. 나는이 코드를 사용하여 VB 코드 숨김을 사용할 수 있지만 포스트 백을 발생시키고 싶지 않습니다. 대신 자바 스크립트를 사용하여이 작업을 수행하려고하지만 어디에서 함수를 호출할지 또는 설정하는 방법을 모르겠습니다.Send Treeview Selected 포스트 백없이 텍스트 상자에 노드 값을 입력하십시오.

<asp:TextBox ID="tbSelectedOrg" runat="server" Enabled="false" asp:TextBox> 
   <asp:TreeView 
       ID="tvOrganizationTree" 
       ExpandDepth="0" 
       runat="server" 
       PopulateNodesFromClient = "true" 
       ShowLines="true" 
       ShowExpandCollapse="true" 
       OnSelectedNodeChanged="tvOrganizationTree_SelectedNodeChanged"> // currently calls vb code causing postback 
       </asp:TreeView> 

답변

0

나는 이러한 문제를 해결하기 위해 JQuery와 사용합니다 :

는 여기에 내가 그것을 보낼 내 트리 뷰의 코드 및 텍스트 상자입니다.

이 코드는 완벽하지 않지만 당신이 볼 수있는 위치의 아이디어를 제공해야합니다 :

$("#tvOrganizationTree .what-ever-class-aspnet-gives-the-nodes") 
     .click(function() 
     { 
      $("#id-of-textbox").html(this.html()); 
     }); 
+0

왜'TextBox'의 _value_를 설정하기 위해'val()'대신'.html()'을 사용합니까? – Jupaol

+0

@David Perlman, asp.net 클래스를 가져 오는 방법에 대해 갈 수있는 노드를 제공합니까? – Weston

+0

@Jupaol이 수정 해 주셔서 감사합니다. 코드 샘플은 기본적인 아이디어가 문제를 해결하지 못한다는 것을 보여주었습니다. –

1

나는이 예제는 정말 빠르게 생성합니다. 시도 해봐.

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     $("#<%= TreeView1.ClientID %> div a").click(function() { 
      $("#txt").val(this.innerHTML); 
      return false; 
     }); 
    }); 
</script> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:TreeView ID="TreeView1" runat="server"> 
    </asp:TreeView> 
    <input type="text" id="txt" /> 
</asp:Content> 

행운을 빈다!

+0

그 작업에 매우 가깝습니다, 유일한 문제는 지금 트리보기의 다른 수준을 열 수 없다는 것입니다. "+"버튼을 클릭하여 자식 노드를 볼 때 "+"이미지를 만든 코드로 텍스트 상자를 채우고 자식 노드를 표시하지 않습니다. 루트 노드를 클릭하면 해당 값이 텍스트 상자를 올바르게 채 웁니다. – Weston

+0

해결 방법을 찾으십시오. –

+0

죄송합니다. 저는 직장에서 다른 일을하는 것을 포착했습니다. 지금 코드를 확인하고, jquery selector를 tree 내의 div 안에있는 모든 link 태그를 대상으로 변경했습니다.이 태그는 트리 뷰의 자식 노드입니다. 이렇게하면 약간의 변경 작업이 필요할 때를 대비하여 어떻게 작동하는지 알 수 있습니다. 행운을 빕니다! –

관련 문제