Mennan
Mennan

Reputation: 4497

How to set treeview's childnode postback false on ASP.NET?

I have a treeview and i want no postback on click any childnodes.And i will get selected childnode value. I found a solution , when i set "node_.SelectAction = TreeNodeSelectAction.None;" i cant select any childnodes and no highlight on it.

Waiting your helps.Sorry about my en.

Aspx:

<asp:TreeView ID="TreeView1" runat="server"></asp:TreeView>

Cs:

TreeView1.Nodes.Clear();
TreeView1.TreeNodeExpanded += new TreeNodeEventHandler(TreeView1_TreeNodeExpanded);

DataTable dt = ImzaDll.Imza.KategorileriGetir(true);

foreach (DataRow row in dt.Rows)
{
   TreeNode node_ = new TreeNode();
   node_.Text = row["ACIKLAMA"].ToString();
   node_.Value = row["KATEGORI"].ToString();
   TreeView1.Nodes.Add(node_);
}



void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
   addChildNodes(e.Node);
}



private void addChildNodes(TreeNode node)
{
    DataTable dt = ImzaDll.Imza.KutuphaneBasliklariGetir(true, node.Value.ToString());

    foreach (DataRow row in dt.Rows)
    {
        TreeNode childNode = new TreeNode();
        childNode.Text = row["BASLIK"].ToString();
        childNode.Value = row["KUTUPHANE_ID"].ToString();
        childNode.ToolTip = row["BASLIK"].ToString() + " kütüphanesini ekle";
        childNode.Target = "_new";


        node.ChildNodes.Add(childNode);
    }
}

Upvotes: 2

Views: 7977

Answers (3)

Aman singh Parihar
Aman singh Parihar

Reputation: 564

TreeNode tn = new TreeNode();

tn.SelectAction = TreeNodeSelectAction.None; OR tn.SelectAction = TreeNodeSelectAction.Expand;

Both of these will not cause postback.

Upvotes: 1

Balan
Balan

Reputation: 421

you could remove the href of link('a') tag attribute to stop post back

$('#ctl00_ContentPlaceHolder1_tvHierarchyView table tr td>a').click(function () {  
      var treeViewData = window["<%=tvHierarchyView.ClientID%>" + "_Data"];        
      if (treeViewData.selectedNodeID.value != "") {      
            var selectedNode=document.getElementById(treeViewData.selectedNodeID.value);    
            var value = selectedNode.href.substring(selectedNode.href.indexOf(",") + 3, selectedNode.href.length - 2);                  
            var text = selectedNode.innerHTML;  
          alert("Text: " + text + "\r\n" + "Value: " + value);  
       } else {  
               alert("No node selected.")  
          }  
              $(this).removeAttr("href");

          ///  ...................... rest of your code

}); ///  End of click function    
}); /// End of document ready function

Here steps explanation:

  1. Get the dev id which contains the tree table by Using inspect element:
  2. Get details from the selected child node.
  3. After taken the details of child node , remove the attribute "href" to avoid post back.
  4. Do whatever functionality you what do with selected node details (eg pass selected value using ajax)

Upvotes: 0

Usman
Usman

Reputation: 3278

You can set CSSClass of treeview child nodes like

      <asp:TreeView LeafNodeStyle-CssClass="childnode" runat="server">....</asp:TreeView>

then using jquery you get get class and set return false like follow.

      $(".childnode").click(function(){
                 return false;
      })

...same way you can set RootNodeStyle-CssClass, ParentNodeStyle-CssClass class and use jquery to set them...

Upvotes: 6

Related Questions