2012-07-10 23 views
1

我一直在這個工作了很長一段時間,還沒有找到任何解決我的問題。當我選擇一個節點時,我希望該節點的值填充文本框。我可以得到這個使用VB代碼隱藏的工作,但它會導致回發,我不希望它。我想嘗試使用JavaScript來做到這一點,但我不知道在哪裏調用函數或如何設置它。發送TreeView選定的節點值到文本框沒有回發

這是我想將它發送給我的樹視圖中的代碼和文本框:

<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

爲什麼使用'.html()'而不是'val()'來設置'TextBox'的_value_? – Jupaol 2012-07-10 21:02:55

+0

@David Perlman,我怎樣才能獲得asp.net給予節點的類? – Weston 2012-07-10 21:06:34

+0

@Jupaol感謝您的糾正。代碼示例是爲了顯示基本思想不能解決問題。 – 2012-07-11 15:48:54

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 2012-07-11 12:40:14

+0

正在解決此問題。 – 2012-07-11 14:59:54

+0

對不起,我在工作中遇到了不同的事情。現在檢查代碼,我只是更改了jquery選擇器,以便定位樹中div內的所有鏈接標記,它們是樹視圖中的子節點。這會讓你瞭解它是如何工作的,以防你需要做一些額外的改變。祝你好運! – 2012-07-11 19:59:10