- PR -

SPREAD for .NET サブウィンドウから親画面への値渡し

1
投稿者投稿内容
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-01-21 18:08
お世話になります。
ASP.NETで開発を行っております。

行いたいのは以下のことです。
@親画面を開いたまま、サブウィンドウを開く。
Aサブウィンドウのイベントにより、親画面のSPREADの指定したセルに値を反映させる。
B親画面のポストバックを行わず、サブウィンドウをとじる。

上記のA及びBはJavaScriptを発行し、実行させたいと思っています。
しかし、現在Aだけうまくいきません。
以下の製品サポートHPからサンプルのスクリプトを取得し、
実際にサンプル画面を作り行ってみたのですが、サンプルすらうまく実行できません。

以下は、サブウィンドウのイベントに記述しているスクリプトです。
--------------------------------------------------------

St = "<script language='javascript'>"
St &="function setMyValue(){"
St &="var fp=window.opener.document.all('FpSpread1');"
St &="fp.SetValue(1,1,'Hi!',true);}"
St &="window.close();"
St &="</script>"
Response.Write(St)

--------------------------------------------------------
スクリプト実行時には、Bサブウィンドウを閉じる処理が行われているので
おそらくSPREDに挿入する個所の記述が間違っていると思います。
それとも、ポストバックしないと値は反映されないのでしょうか…。

ご教授お願い致します。


***参照したHP***
[製品FAQサーチ]
<http://www.grapecity.com/japan/Support/product_faq_search.asp>
ID:7069
「サブウィンドウから親ウィンドウのSPREADにデータを設定したい。」


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-21 18:33
引用:

PG新人さんの書き込み (2006-01-21 18:08) より:

[引用部機種依存文字を編集しています]

しかし、現在 (2) だけうまくいきません。
(snip)
スクリプト実行時には、(3)サブウィンドウを閉じる処理が行われているので
おそらくSPREDに挿入する個所の記述が間違っていると思います。


いえ、(2) は間違ってはいないでしょう。
fp と opener の参照は正しいんですよね? (正しくなければエラーになりますけど...)
window.close(); がない状態で試してみてもダメでしたか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-01-21 18:50
じゃんぬねっと様

window.close();がない記述でも行ってみましたが、変化はありませんでした…。

fp と opener の参照は正しいんですよね?

↑お恥ずかしいのですが、「参照」という概念が私自身定着していません;;

状況は以下の通りです。
◆.NETの1プロジェクトにて、2つのWebform(WebForm1とWebForm2)を使用。
◆WebForm1を親画面とし、SPRED(IDはFpSpread1)とボタン(IDはButton1)を貼り付け。
◆WebForm2を子画面とし、ボタン(IDはButton2)を貼り付け。
◆スタートページをWebForm1に設定。
◆親画面のボタン(Button1)押下で子画面(WebForm2)を起動。
◆子画面のボタン(Button2)押下で先述のスクリプト実行。

以上の状況で実行中です。
何か致命的なミスがありますでしょうか…。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-21 19:03
引用:

PG新人さんの書き込み (2006-01-21 18:50) より:

お恥ずかしいのですが、「参照」という概念が私自身定着していません;;


まあ、Script エラーが起こっていなければ良いです。
というか、起きていませんよね??
たとえば、IE の場合「スクリプトのエラーを通知する」状態でないと判りにくいですが。

引用:

子画面のボタン(Button2)押下で先述のスクリプト実行。


ここはどうみても問題ないように思えるんですが...
子ウィンドウを開ける場所も問題ないでしょうし... (;_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-01-21 19:14
じゃんぬねっと様

ブラウザのインターネットオプション詳細設定にて
「スクリプトのエラーごとに通知を表示する」にしています。

なにかHTMLにも記述が必要なのでしょうか…。
HTMLはまったくいじっていません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-22 01:22
引用:

PG新人さんの書き込み (2006-01-21 19:14) より:

なにかHTMLにも記述が必要なのでしょうか…。
HTMLはまったくいじっていません。


ID さえ合っていれば良いので、必要はないハズです...。

逆に質問なのですが、スクリプトなのにポストバックしないと反映されないってことなのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-01-23 10:07
IISに「fp_client」の仮想フォルダは登録してありますか?
(登録してなかったら、ランタイムエラーになるから...違うか...)

引用:

PG新人さんの書き込み (2006-01-21 18:50) より:

window.close();がない記述でも行ってみましたが、変化はありませんでした…。

◆子画面のボタン(Button2)押下で先述のスクリプト実行。


Button2 が押下された際、setMyValue を呼び出している部分はどのようにコーディングされていますか?
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-01-23 23:08
お世話になってます。

以下の方法によりできましたのでご報告しておきます。


@子画面のHTML<HEAD>〜</HEAD>内に以下を記述。
------------------------------------------------------------------------
   <script language="javascript">
var i;
var j;
var NAME;
function setMyValue(i,j,NAME){
  var fp=window.opener.document.all("FpSpread1");
  fp.SetValue(i,j,NAME,true);
}
  </script>
------------------------------------------------------------------------

A子画面のボタンイベントに以下を記述。
------------------------------------------------------------------------
Dim script As String
Const scriptName As String = "setMyValue"
Dim i As Integer = 2 '行番号
Dim j As Integer = 3             '列番号   
Dim NAME As String = "sample" '反映したい内容

If Not IsStartupScriptRegistered(scriptName) Then
script = "<script language=""javascript"">" & vbNewLine
script &= "<!--" & vbNewLine
script &= " setMyValue(" & i & "," & j & "," & NAME & ");" & vbNewLine
script &= "-->" & vbNewLine
script &= "</script>"
RegisterStartupScript(scriptName, script)
End If
------------------------------------------------------------------------

以上です。
またよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)