2011-10-06 54 views
0

我需要顯示一個字符串列表給用戶。用戶可以選擇多個字符串。如果選擇了一組特定的字符串,則每個字符串旁邊都會顯示一個文本框。asp.net:treeview - 顯示文本框,如果選中?

我想要做的就是向用戶顯示一個TREEVIEW,每個節點都是一個字符串。他們將通過選中框來選擇他們想要的每個字符串。

問題: 如果用戶選擇特定的複選框,我需要一個文本框來顯示來自用戶的GET輸入。

問題:我如何從用戶獲得字符串輸入與樹視圖?

+0

我不明白這是否提到樹視圖是唯一的網頁?我的意思是你爲什麼不把它放在別的地方呢?另外,我認爲ListView更適合這個工作,甚至是一個ListBox。 – Bastardo

+0

@AteşGÜRAL:感謝您的建議,但是用戶可以編輯嗎? –

+0

那麼,你可以使用該文本框(即將出現的那個)。即使該文本框是爲了別的東西,你可以使用一個常量文本框,當列表框的selecteditem改變時獲得ListBox的selectedItem然後寫你想要的和點擊一個按鈕並保存它。我在我的項目中做了這個。我認爲TreeView是爲分類數據創建的,這就是爲什麼我建議使用ListBox或ListView。 – Bastardo

回答

2

TreeView本身不支持包括TextBoxes。您可以使用JavaScript解決方案創建客戶端文本框並將值映射序列化爲<asp:HiddenField />

設置您的TreeView和HiddenField:

<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#:

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

未經檢驗的,但希望有幫助的開始。

相關問題