- PR -

ポップアップから選択したデータをデータグリッドのテンプレート列にあるテキストボックスに表示したい!

1
投稿者投稿内容
くぅー
会議室デビュー日: 2003/08/06
投稿数: 12
投稿日時: 2003-09-19 15:10
いつも大変参考にさせていただいております。
過去レスを検索したのですが、似たものがなかったので質問します。

VB.NETでWEBの開発しています。
データグリッドのテンプレート列にテキストボックスとコマンドボタンを配置しています。
そのコマンドボタンを押すと、ポップアップウィンドウが開きます。↓

Dim strScript As String
Dim strtxt As String = "TextBox1"

strScript &= "<script language=javascript>"
strScript &= "var feature = 'Height=500, Width=700, Top=100, Left=200, dependent=yes, location=no, resizable=yes, scrollbars=yes, toolbar=no';"
strScript &= "window.open('Bumoncd.aspx?source=" & strtxt & "','', feature);"
strScript &= "</script>"
Response.Write(strScript)


その中で選択してきたデータ(部門コード:strBmncd)を、元画面のデータグリッド上のテキストボックスに表示したいのです。
JavaScriptで下記のように書いてみているのですが、この方法だと、テキストボックスには表示できますが、データグリッド上のテキストボックスにはうまくデータを入れることができないのです。

Dim strSource As String = Request.Params("source")
Dim strScript As String
strScript &= "<script language=javascript>"
strScript &= "window.opener.Form1." & strSource & ".value=' " & strBmncd & "';"
strScript &= "window.close();"
strScript &= "</script>"
Response.Write(strScript)

何か良い方法をご教授お願いします。
あすかぜ
常連さん
会議室デビュー日: 2003/04/22
投稿数: 21
投稿日時: 2003-09-19 19:18
生成されたテキストボックスのIDは、
DataGrid1__ctl?_TextBox1
のようになっていませんか?

WebフォームにJavaScriptからアクセスするなら、
出力HTMLを見て、それにあわせたコードを書く必要があると思います。
(コンポーネントの出力に依存したプログラムを書くと保守コストが増えそうですが・・・。)
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-19 22:14
引用:
データグリッドのテンプレート列にテキストボックスとコマンドボタンを配置しています。
そのコマンドボタンを押すと、ポップアップウィンドウが開きます。
その中で選択してきたデータ(部門コード:strBmncd)を、元画面のデータグリッド上のテキストボックスに表示したいのです。

動作確認してませんが、ボタンを押下した時に同一セル内のテキストボックスのIDを
取得するようにしてやればいいと思います。
子画面でわざわざポストバックしてるようですが(何か処理してるのかな)、提示ソースに沿った形で修正しました。

コード:
TemplateColumn内にテキストボックスとボタンを配置?
<asp:templatecolumn><itemtemplate>
<input type="text" id="txt" runat="server">
<input type="button" id="btn" value="OPEN" onclick="OpenPopup(this)" runat="server">
</itemtemplate></asp:templatecolumn>

子画面を開く
function OpenPopup(v){
  window.open("Bumoncd.aspx?source=" + v.parentElement.children[0].id + ","_blank");
}

子画面のサーバ側コード
strScript &= "<script language=javascript>"
strScript &= "window.opener.document.all('" & strSource & "').value=' " & strBmncd & "';"
strScript &= "window.close();"
strScript &= "</script>"

くぅー
会議室デビュー日: 2003/08/06
投稿数: 12
投稿日時: 2003-09-23 16:28
あすかぜさん、ぴでさんご教授ありがとうございました.
早速試してみました.
あすかぜさんのご指摘通り確かになっていました.
そこでぴでさんのやり方を真似させていただき

-----------------JAVASCRIPT---------------------------------
<script language="javascript">
<!--
function OpenPopup(v){
window.open("Bumoncd.aspx?source=" + v.parentElement.children[0].id);
}
// -->
</script>

---------------------- HTML --------------------
<EditItemTemplate>
<asp:TextBox id=txtBmncd_SK runat="server" Width="86px" Text='<%#DataBinder.Eval(Container, "DataItem.BUMONCD") %>' MaxLength="4"></asp:TextBox>
<INPUT id="cmdBmncd_SK" onclick="OpenPopup(this)" type="button" value="?" runat="server">
</EditItemTemplate>

で解決できました。ありがとうございました.
1

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