これは、SiteMapDataSourceコントロールをTreeViewのデータソースとして使用すると、ASP.NETによって自動的に処理される十分な問題です。この場合、あなたはあなたのTreeViewのDatasourceが何であるかについて言及していません。
また、ツリービューにリンクが含まれている(NavigateUrl
プロパティが設定されている)か、クリックごとにポストバックするテキストアイテムが含まれているかどうかについては言及していません。それが前者なら、私が知る限り、あなたは運がありません!これは、NavigateUrl
が設定されたTreeNodeに対してSelectionイベントが発生しないためです。彼らは通常のハイパーリンクとして機能します。しかし、それは後者である場合
、その後、次の手順を試してみることができます。
。 TreeViewのSelectedNodeChanged
イベントを処理します。このイベントハンドラでは、SelectedNode.ValuePath
プロパティの現在の値を取得し、ViewState/Sessionに格納します。 SelectedNodeのValue
を使用して、ページをそれにマップされたURLに条件付きでリダイレクトします。次のような
何か:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNode selNode = TreeView1.SelectedNode;
string pathToNode = selNode.ValuePath;
Session.Add("SelPath", pathToNode);
switch (selNode.Value)
{
//Redirect to URL accordingly.
}
}
B。マスターページ(リダイレクト先のページ)の後続のロード時に、先に設定したValuePath
の値を取得し、以前に選択したノードとExpand
を探します。次のような
何か:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
string pathToNode = (string)Session("SelPath");
Session.Remove("SelPath");
TreeNode selNode = TreeView1.FindNode(pathToNode);
if (selNode != null)
{
selNode.Expand();
}
}
}
注私は、コードをテストする機会がなかったので、これは主に架空のです。
どこでコードを書いていいですか? – Kartik