LI CHOO

LI CHOO

  • 2k
  • 11
  • 160

How to remain the treeview after redirect to another page?

Apr 2 2021 1:31 AM
Im currently using this method to bind my treeview, After i expand the treeview and click the node, it will redirect to another page, and then the treeview will be refresh to default, which means showing the treeview before expanding.. so i need to save the treeview state in order to remain the treeview state. i had tried the below method but it's not working, anyone can help..
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. if (!Page.IsPostBack)  
  4. {  
  5. if (Session["ExpandedNodes"] != null)  
  6. {  
  7. ((List<string>)Session["ExpandedNodes"]).ForEach(a => TreeView1.FindNode(a).Expanded = true);  
  8. }  
  9. LoadTransactionMenu();  
  10. }  
  11. }  
  12. private void LoadTransactionMenu()  
  13. {  
  14. //TRANSACTION MENU // this is used to bind the data to the treeview  
  15. string SubModuleID, SubModuleNM, DocModuleID, DocModuleName, MenuTransID, MenuTransName;  
  16. SqlConnection con = new SqlConnection(ConString);  
  17. string CmdString = "SELECT SUBMODULEID, SUBMODULENM, URLNAME FROM SUBMODULE";  
  18. SqlCommand cmd = new SqlCommand(CmdString, con);  
  19. SqlDataAdapter sda = new SqlDataAdapter(cmd);  
  20. DataTable dt = new DataTable();  
  21. sda.Fill(dt);  
  22. TreeNode node1 = new TreeNode();  
  23. node1.Text = "TRANSACTION MENU";  
  24. TreeView1.Nodes.Add(node1);  
  25. for (int i = 0; i < dt.Rows.Count; i++)  
  26. {  
  27. SubModuleID = dt.Rows[i]["SUBMODULEID"].ToString();  
  28. SubModuleNM = dt.Rows[i]["SUBMODULENM"].ToString();  
  29. TreeNode SubModuleNode = new TreeNode(SubModuleNM, SubModuleID);  
  30. SubModuleNode.NavigateUrl = dt.Rows[i]["URLNAME"].ToString();  
  31. node1.ChildNodes.Add(SubModuleNode);  
  32. CmdString = "SELECT DDID, DOCNAME, DDADDRESS FROM DOCMODULE WHERE SUBMODULEID=@SUBMODULEID";  
  33. cmd = new SqlCommand(CmdString, con);  
  34. cmd.Parameters.AddWithValue("@SUBMODULEID", SubModuleID);  
  35. sda = new SqlDataAdapter(cmd);  
  36. DataTable dt2 = new DataTable();  
  37. sda.Fill(dt2);  
  38. for (int j = 0; j < dt2.Rows.Count; j++)  
  39. {  
  40. DocModuleID = dt2.Rows[j]["DDID"].ToString();  
  41. DocModuleName = dt2.Rows[j]["DOCNAME"].ToString();  
  42. TreeNode DocModuleNode = new TreeNode(DocModuleName, DocModuleID);  
  43. DocModuleNode.NavigateUrl = dt2.Rows[j]["DDADDRESS"].ToString();  
  44. SubModuleNode.ChildNodes.Add(DocModuleNode);  
  45. CmdString = "SELECT DID, DNAME, DADDRESS FROM MENUTRANSACTION WHERE DDID=@DDID AND UID= '" + Session["UserID"] + "'";  
  46. cmd = new SqlCommand(CmdString, con);  
  47. cmd.Parameters.AddWithValue("@DDID", DocModuleID);  
  48. sda = new SqlDataAdapter(cmd);  
  49. DataTable dt3 = new DataTable();  
  50. sda.Fill(dt3);  
  51. for (int k = 0; k < dt3.Rows.Count; k++)  
  52. {  
  53. MenuTransID = dt3.Rows[k]["DID"].ToString();  
  54. MenuTransName = dt3.Rows[k]["DNAME"].ToString();  
  55. TreeNode MenuTransNode = new TreeNode(MenuTransName, MenuTransID);  
  56. MenuTransNode.NavigateUrl = dt3.Rows[k]["DADDRESS"].ToString();  
  57. DocModuleNode.ChildNodes.Add(MenuTransNode);  
  58. }  
  59. if (DocModuleNode.ChildNodes.Count == 0)  
  60. {  
  61. SubModuleNode.ChildNodes.Remove(DocModuleNode);  
  62. }  
  63. }  
  64. if (SubModuleNode.ChildNodes.Count == 0)  
  65. {  
  66. node1.ChildNodes.Remove(SubModuleNode);  
  67. }  
  68. }  
  69. }  
  70. protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)  
  71. {  
  72. List<string> expandedNodes = new List<string>();  
  73. //get all expanded nodes  
  74. TreeView1.Nodes.Cast<TreeNode>().ToList().ForEach(a => GetExpandedStatus(a, expandedNodes));  
  75. //collapse all to reset the treeview  
  76. TreeView1.CollapseAll();  
  77. //save expanded node value paths  
  78. Session["ExpandedNodes"] = expandedNodes;  
  79. }  
  80. public void GetExpandedStatus(TreeNode node, List<string> ExpandedNodes)  
  81. {  
  82. //check if node is expanded  
  83. if (node.Expanded.GetValueOrDefault(false))  
  84. ExpandedNodes.Add(node.ValuePath);  
  85. node.ChildNodes.Cast<TreeNode>().ToList().ForEach(a => GetExpandedStatus(a, ExpandedNodes));  
  86. }