2012-12-17 39 views
0

我在頁面上有一個樹形視圖,我想在某些事件上更新/添加節點 - 例如,我有一個下拉列表,我有複選框列表,等等。 Treeview在0級已經定義了一個節點。 我想只在Dropdown_selectedIndexchanged事件中添加一個節點作爲節點0的子節點。 aspx頁面上的.cs頁ASP.NET:每次在特定級別添加樹節點

dropdown_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    tv1.Nodes[0].ChildNodes.Add(new TreeNode(dropdown.SelectedIndex.Text.Trim))); 
} 

樹形視圖

<asp:TreeView ID="tv1" runat="server"> 
    <Nodes> 
     <asp:TreeNode Text="parent" Value="" ShowCheckBox="False"></asp:TreeNode> 
    </Nodes> 
</asp:TreeView> 

代碼中,我看到了問題,但不知道如何解決這個問題 - 爲我這樣做。 問題是 - 我想在tv1樹視圖的0級添加ONE和ONLY ONE子節點。

我怎麼能做到這一點

回答

1

它可能不被設置爲false,因爲工作的下拉菜單中「的AutoPostBack」屬性。僅當您將此屬性設置爲true時,事件處理程序纔會觸發。以下代碼正在爲我工​​作。

 <asp:DropDownList ID="dropdown" runat="server" AutoPostBack="True" OnSelectedIndexChanged="dropdown_SelectedIndexChanged"> 
      <asp:ListItem>One</asp:ListItem> 
      <asp:ListItem>Two</asp:ListItem> 
     </asp:DropDownList> 
    <asp:TreeView ID="tv1" runat="server"> 
    <Nodes> 

     <asp:TreeNode Text="parent" Value="" ShowCheckBox="False"></asp:TreeNode> 
    </Nodes> 
</asp:TreeView> 

代碼隱藏(您可以直接或通過索引獲得價值):

 protected void dropdown_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      tv1.Nodes[0].ChildNodes.Clear(); 
      tv1.Nodes[0].ChildNodes.Add(new TreeNode(dropdown.SelectedValue)); 
     } 
+0

謝謝,但會牛逼這個代碼將每到這個事件被觸發時執行,我只想要一個和OY一個子節點在節點[0] – user1889838

+1

您可以使用一些javascript或jqeury在客戶端執行此操作,這是避免服務器往返的一種選擇,但取決於您的方案,如果要保存值,則服務器端邏輯更容易實施。 [編輯後面的代碼]可以在添加之前清除子節點 – Nexus23