- - PR -
子画面から親画面のラベルに値を代入する方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-25 20:22
いつもお世話になっております。
環境: WinXP VS2005 ASP.netの初心者です。 子画面から親画面の編集を行いたいと思い、 window.openerを使ってみました。 しかし、親画面のテキストボックスには値をセットできるのですが、 ラベルにはセットできません。 調べたところ、入力可能なコントロールにしかこの方法は使用できないようです。 解決策、またはwindow.opener以外の方法をご存知の方いらっしゃいましたら ご教授ください。 | ||||||||||||
|
投稿日時: 2007-01-25 21:06
「子画面から親画面の編集」というのは、Javascriptで別ウィンドウの値を書き換えるという理解でいいんですよね。
window.openerに注目していらっしゃるようなので、私が誤解しているのかもしれませんが、valueプロパティが使えないということではないんですか? Label1.value などと書くとスクリプトエラーになるということではなくて? そうならinnerTextとかinnerHTMLとかいうのを使ってみてください。 | ||||||||||||
|
投稿日時: 2007-01-25 22:19
ラベルは span 要素だから。。。innerText かな。
_________________ | ||||||||||||
|
投稿日時: 2007-01-26 10:44
遅くなり申し訳ありません。
ご返信ありがとうございます。 >>「子画面から親画面の編集」というのは、Javascriptで別ウィンドウの値を >>書き換えるという理解でいいんですよね。 >>window.openerに注目していらっしゃるようなので、私が誤解しているのかも >>しれませんが、valueプロパティが使えないということではないんですか? おっしゃるとおり、別ウインドウの値を書き換えたいのですが、 ラベルにvalueが使えません。 innerTextを調べて以下のように使ってみたのですが、やはりラベルを編集できません。 (テキストは従来とおり編集できました。) 親画面のaspxファイル <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txta" runat="server">testTEXT</asp:TextBox> <asp:Label ID="lbla" runat="server">testLABEL</asp:Label> </div> </form> </body> 子画面での処理 Dim csOpenWindow As New StringBuilder() Dim csName As String = "TEST" Dim csType As Type = Me.GetType() Dim cs As ClientScriptManager = Page.ClientScript csOpenWindow.Append("<script type=text/javascript>") csOpenWindow.Append("window.opener.document." & "txta" & ".innerText = '" & 代入内容 & "' ;") csOpenWindow.Append("window.opener.document." & "lbla" & ".innerText = '" & 代入内容 & "' ;") csOpenWindow.Append("</script>") 'スクリプトの実行 cs.RegisterStartupScript(csType, csName, csOpenWindow.ToString(), False) ただ.valueを.innerTextに変えただけではだめでしょうか? | ||||||||||||
|
投稿日時: 2007-01-26 11:17
というのは、
こちらは OK で、
こちらは NG だったということでしょうか? スクリプト エラーは、出力されませんでしたか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-01-26 11:39
引用:
-------------------------------------------------------------------------------- csOpenWindow.Append("window.opener.document." & "txta" & ".innerText = '" & 代入内容 & "' ;") -------------------------------------------------------------------------------- こちらのテキストの代入はできました。 引用: -------------------------------------------------------------------------------- csOpenWindow.Append("window.opener.document." & "lbla" & ".innerText = '" & 代入内容 & "' ;") -------------------------------------------------------------------------------- こちらのラベルの代入ができませんでした。 >> スクリプト エラーは、出力されませんでしたか? 'スクリプトの実行 cs.RegisterStartupScript(csType, csName, csOpenWindow.ToString(), False) この部分でエラーは発生しませんでしたが、正直言いましてスクリプトエラーを どこで参照するかがわかりません。 (試しにJavaScriptの部分をでたらめなコードにしてデバッグしてみましたが、 エラーが発生しなかったので・・・) | ||||||||||||
|
投稿日時: 2007-01-26 12:04
ここは、JavaScript 側のソースではないですよね。
いや、ブラウザでエラーは発生していますよ。 IE では、「スクリプトのエラーを通知しない」 のがデフォルトになっています。 オプションを設定し直すか、ブラウザのステータス バー左にあるエラーアイコンをクリックしましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-01-26 12:54
ご返信ありがとうございます。
スクリプトエラーを表示したところ、 window.opener.document.form1.lblaは Nullまたはオブジェクトではありません。 というエラーでした。 やはりInnerTextの使い方が間違っているのでしょうか? |