画面から画面へ値1つずつ複数回受け渡しすべてを表示
タイトル:
子画面から親画面へ値を1つずつ複数回受け渡してすべてを表示するにはどうすればよいでしょうか
内容
はじめまして。
こんにちは DIK です。
私、VisualStudio2013web のASP.netでWebアプリケーションを作成しております
使用言語は
Server言語:C#
Script言語:JavaScript
Sql言語:PostgleSQL
クライアント言語にHTML関連他、jQuwery なんかも使っております。
ご質問がありまして、ご教授いただけませんでしょうか・
内容をざっくり申しますと、画面から画面へ値1つずつ複数回受け渡しすべてを表示することです。
もう少し詳しく解説しますと
親画面と小画面があり、値の受け渡しを行います。
親画面は値の受け取り、子画面が値の渡します
1.子画面を開き、SQLでDBの値を検索してすべてのレコードを表示させます。
2.子画面でDBjのデータが複数表示されている状態で一件データを選択します
3.そのデータを親画面に値を一件送り表示させます。
4.親画面に表示されている状態で、子画面からデータを新たに選択をします
5.そのデータを送ります。
6すると、3で送ったデータ(値)と5で送った値の両方が親画面に表示される
このようにするにはどのようにするとよいでしょうか。
方法としてはSessionやApplication変数を使用して送る方法を行いました。
子画面(ポップアップウインドウ)側
```C#
//DataGridで表示したDBの値の取得文(位置セル分の値)
//codeはDBで取得した値の1件分のデータです。
String code = MyGrid.Items[e.Item.ItemIndex].Cells[0].Text;
ArrayList data = new ArrayList();
data.Add(code);
for (int d = 0; d < data.Count; d++)
{
String Gridcode = "";
Gridcode+= Convert.ToString(" or goods_code ='" + (String)data[d]) + "'";
Session["Gridcode"] = Gridcode;
Application["Gridcode2"] = Gridcode;
}
//親画面リロード
//再選択へ戻る
```
親画面側
```C#
//方法1
string Gridcode = (string)(Session["Gridcode"]);
string sql = "";
sql += " select goods_name, goods_code from MST_goods ";
sql += "where goods_code =''";
sql += "" + Gridcode + "";
//方法2
string Gridcode2 = (string)(Application["Gridcode2"]);
string sql = "";
sql += " select goods_name, goods_code from MST_goods ";
sql += "where goods_code =''";
sql += "" + Gridcode2 + "";
```
結果は
Session["Gridcode"] = Gridcode;
Application["Gridcode2"] = Gridcode;
の値が子画面から渡すと上書きされてします。
またArrayListで回している値が毎回1データのみになっています
値を複数複数回で複数件回して受け渡すように記述しようとしました
ほかに良い方法はありませんか?
なおD子画面で選択した値をDB格納させて親画面でDBに格納したデータをすべて取得する方法では実現できますが
条件としては与えられたDBテーブル情報を変更せずに行うことです。そのため値を送るためのDBを作ることができません。
その他の処理は画面操作が同じ動きをできれば、どんな方法を使用しても構いませんということで作成をしております
非常に困っております
長々となってしまい、文章に誤字や説明不足など至らない点があるかと思われますが
どなたかご教示お願い致します。
最後に
画面遷移方法をお伝えします
1.らC#側にJavaScriptの処理をさせて画面の開閉を行う
2.子画面はポップアップウインドウです
開き方は、親画面から Window.open() で子画面を開く
C#側に
```C#
string startupScript = "";
startupScript += "<script language='JavaScript'> window.open()";
startupScript += " <" + "/script>";
ClientScript.RegisterStartupScript(this.GetType(), "startup", startupScript);
```
の記述をしております
処理を行い子画面からなんだかの処理Reloadで親画面に処理を送る
C#側に
```C#
string startupScript = "";
startupScript += "<script language='JavaScript'> window.opener.location.reload()";
startupScript += " <" + "/script>";
ClientScript.RegisterStartupScript(this.GetType(), "startup", startupScript);
```
の記述をしております
この処理によってポップアップウインドウを操作して元画面に値を送る処理を行えました
お礼
<178tallさんへ> 詳しく教えていただきまして、ありがとうございます。 (3)のオンライン・ソフトをダウンロードしました。 求めていたのは、これです。 大変助かりました。本当にありがとうございました。