一个目录树 treeview,当生成时已设置了各节点的NavigateUrl, 当用户访问时,须在TreeView1_SelectedIndexChange事件中,根据用户权限确定该节点的转向是否可用,我怎么能做到这一点呢,即使把该节点的NavigateUrl置为空,恐怕也只是在下次点击时才会起作用,而当前这次点击仍会转到别的页面吧?

解决方案 »

  1.   

    当生成目录树时 就判断如果没有权限把节点的的NavigateUrl置为空不要在TreeView1_SelectedIndexChange事件中判断
      

  2.   

    menuItem.NavigateUrl = String.Format("javascript:IEWebTreeMenuBaseOnMenuItemClick('{0}', '{1}', '{2}', '{3}', '{4}')", this.hdnLastMenuItemID.ClientID, menuItem.ID, this.hdnMenuItemID.ClientID, this.hdnMenuItemChangeFlag.ClientID, this.LinkButtonPostBack.ClientID); if(!this.Page.IsClientScriptBlockRegistered("IEWebTreeMenuBaseOnMenuItemClick"))
    {
    StringBuilder sb = new StringBuilder();
    sb.Append("<script language=\"javascript\">");
    sb.Append("function IEWebTreeMenuBaseOnMenuItemClick(hdnLastMenuItemID, menuItemID, hdnMenuItemID, hdnMenuItemChangeFlag, linkButtonPostBackID)");
    sb.Append("{");
    sb.Append("if(document.all(hdnMenuItemID).value != menuItemID)");
    sb.Append("{");
    sb.Append("document.all(hdnLastMenuItemID).value = document.all(hdnMenuItemID).value;");
    sb.Append("document.all(hdnMenuItemID).value = menuItemID;");
    sb.Append("document.all(hdnMenuItemChangeFlag).value = '1';");
    sb.Append("var postBack = document.all(linkButtonPostBackID).href;");
    sb.Append("var start = postBack.indexOf(\"'\");");
    sb.Append("postBack = postBack.substring(start + 1, postBack.indexOf(\"'\", start + 1));");
    sb.Append("__doPostBack(postBack);");
    sb.Append("}");
    sb.Append("}");
    sb.Append("</script>");
    this.Page.RegisterClientScriptBlock("IEWebTreeMenuBaseOnMenuItemClick", sb.ToString());
    }