実際のプロジェクトでは、まず、新しいウィンドウがポップアップし、TreeView コントロールのデータ バインディングが前のエッセイ (TreeView Binding XML Data Source C# Code Example) にありました。前述したように、ここで解決する必要があるのは、TreeView 内のノードをクリックし、Text と Value を親ページに返し、新しいウィンドウを閉じる方法です。
まず、TreeView のクライアント イベントをサポートするために、バックグラウンド コードで onclick 属性を TreeView に追加します。コードは次のとおりです。
if (!IsPostBack)
{
TreeView1.Attributes.Add("onclick", "ReturnValue()");/ /ReturnValue は JavaScript 関数です
BindTreeView();
}
次に、js を使用して TreeView で選択したノードを取得する方法を解決する必要があります。 スクリプトは次のとおりです。 >
function ReturnValue() {
var objNode =イベント.srcElement;
var Unitid =event.srcElement .href;
if (objNode.tagName != "SPAN") {
return;
window.opener.document.getElementById ("txtUnit").value = objNode.getAttribute(" innerHtml");
window.opener.document.getElementById("txtUnitID").value = Unitid
window.close();
ここで実際に使用します。ちょっとしたトリックです。TreeView にバインドされた ValueField の値をどの属性で取得できるか実際にはわからないため、Value の値を NavigateUrl に結び付けました。コードの黄色の部分を書いたのはそのためです。HTML コードは次のとおりです。
の赤い部分このコードは、TreeView に表示されるテキストを取得するために使用されます。ソース ファイルを確認すると、TreeView の Text プロパティの値が SPAN に配置されていることがわかります。
コードの緑色の部分は親ページを埋め戻すために使用されますが、「txtUnit」はクライアント側のコントロールである必要があることに注意してください。これがサーバー側のコントロールである場合、ポップアップ ウィンドウが表示されます。コンパイル時にコントロールが存在しないことを報告します。
これで私に必要な機能が実現しました!さらに、親ページにバックフィル値を読み込むために使用されるクライアント コントロールがサーバー イベントで使用された場合はどうすればよいのかと言う人もいるかもしれません。これも非常に単純です。C# コードは次のとおりです。
Request.Form["txtUnit"].ToString();
ただし、ここでの「txtUnit」はコントロール ID ではなく、name 属性であることに注意してください。 !