重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在、アプリケーションを作成しているのですが構想と近いサンプルが@ITに
ありましたので利用させて頂きました。

参考にさせて頂いたのは[ASP.NET]1つのWebフォーム内で一覧/詳細画面を切り替えるには?です。
http://www.atmarkit.co.jp/fdotnet/dotnettips/354 …

現在、サンプルのままでテーブル等を変更しただけの状態になっており、表示もうまくされております。

作りたいのはこのサンプルの前に検索フォームがあり、検索フォームで押されたボタン1が押されてこのサンプルに
きた場合は検索キーはA・ボタン2が押された場合の検索キーはBとサンプルのPage_Loadの際にに表示されるテーブルの検索キーが異なってくる形のものです。

ボタンの種類によって検索キーを変える処理分岐の方法が分からないのとこのサンプルでPage_Loadの際に
テーブルをあと4つ表示させたいのですがどの様にすれば宜しいのでしょうか?
(データソース名も違うテーブルです。)

色々調べてみたのですがどうしても分からなかったので教えて頂けるとありがたいと思っています。

最近、勉強し始めたばかりで分かりづらい部分があるかと思いますが宜しくお願い致します。

A 回答 (51件中31~40件)

Clickイベントは汎用イベントハンドらなので引数のeはSystem.EventArgsになっています



Commandイベントはボタン専用のイベントで引数eはCommandEventArgsになっています

CommandEventArgsにはこのイベントのコントロールに設定されたCommandAgument、CommandNameなどを参照できます

これの利点は 複数のボタンで1つのハンドラを共有できると言ったことです

今回のように ボタンAでは『名前』で検索、ボタンBでは『所在地』で検索など行う処理自体は同じな共有化が出来ます
HiddenFieldA.Value = e.CommandName
と言った具合にしておけば ボタンAで呼ばれてもボタンBで呼ばれても同じコードの実行ですみます

この回答への補足

ありがとうございます☆

VBファイルの

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Protected Sub ButtonA_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonA.Click

HiddenFieldA.Value = ButtonA.CommandName

End Sub
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

を削除して

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sub ButtonA_command(ByVal sender As Object, ByVal e As CommandEventArgs)

HiddenFieldA.Value = e.CommandName

End Sub
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

へと変更しました。

aspxファイルは

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

<asp:Button ID="ButtonA" runat="server" OnCommand="ButtonA_command" Text="検索実行" PostBackUrl="~/Serch_View.aspx" CommandName="契約番号" Width="78px" />

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

へと変更しました。
やっぱりあのエラーが出てしまいます。。。

NULLって事は値が来ていないのでしょうか??

補足日時:2007/11/05 18:51
    • good
    • 0

テキストボックスへの入力を渡すのではないでしょうか?



myKeyOneは return TextBox1.Text になりませんか

またボタンAのClickイベントより Commandイベントホノウが良いかもしれません
Commandイベントなら 引数のeで CommmandNameなどを参照できます

この回答への補足

>テキストボックスへの入力を渡すのではないでしょうか?

そうですね!
間違えてました。。。

Public ReadOnly Property myKeyOne() As String
Get
Return ValueToPassOne.Text
End Get
End Property
こうですね☆

redfox63さまの環境でできていらっしゃったのであればこちらのソースが違っていると思い確認して頂いた次第でございます。

ありがとうございます。
Commandイベントですか?
Clickイベントとは違うものですよね?

補足日時:2007/11/05 15:41
    • good
    • 0

おかしいですね 当方VWDは使用していないので同じ現象が確認できません



VS2005でAP.NETサイトを新規構築すると
App_Dataフォルダ
Defualt.aspx
Web.Config
が作成され
サイトのビルドなどを行うと Binフォルダに関連DLLが構築されます

すみません 私一人ではフォローし切れません m(__)m
MSDNフォーラムのVWD EE辺りに投稿してみてはいかがでしょう

参考URL:http://forums.microsoft.com/MSDN-JA/default.aspx …

この回答への補足

ありがとうございます☆
>VS2005でAP.NETサイトを新規構築すると
App_Dataフォルダ
Defualt.aspx
Web.Config
が作成され
合っているので安心致しました☆

テキストボックスの値を持ってきていない気もするので検索側のソース見て頂いて宜しいでしょうか?
お願い致します!

合っていればまた別の場所への投稿も考えてみます。。。

@@@@@@@@@@@@@@@@@@@ left.aspx(ラベル・テキストボックス・ボタン) @@@@@@@@@@@@@@@@
<tr>
<td align="left" style="height: 58px;">
<asp:Label ID="Label2" runat="server" Text="契約番号" Width="150px" style="text-align:center"></asp:Label></td>
<td align="left" style="height: 58px">
<asp:TextBox ID="ValueToPassOne" runat="server" Width="170px"></asp:TextBox>
<asp:HiddenField ID="HiddenFieldA" runat="server" />
</td>
<td align="left" style="width: 25px; height: 58px">
<asp:Button ID="ButtonA" runat="server" Text="検索実行" PostBackUrl="~/Serch_View.aspx" CommandName="契約番号" Width="78px" />
</td>
<td align="left" style="width: 35px; height: 58px">
<asp:Button ID="Button1" runat="server" Text="クリア" /></td>
</tr>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@ left.vb @@@@@@@@@@@@@@@@@@
Partial Class left
Inherits System.Web.UI.Page
_____________________________________________
Protected Sub ButtonA_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles ButtonA.Click

HiddenFieldA.Value = ButtonA.CommandName
End Sub
___________________________________________
Public ReadOnly Property myKeyOne() As String
Get
Return ButtonA.Text
End Get
End Property
___________________________________________
Public ReadOnly Property myProcOne() As String
Get
Return HiddenFieldA.Value.ToString
End Get
End Property
End Class
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

補足日時:2007/11/05 14:41
    • good
    • 0

VWDのビルドメニューに『サイトの発行』と言うメニューがあるはずです


これをクリックしてサーバーへアップしましょう
ターゲットの欄に http://サーバー名/data/webappl/Test/
と言った具合にすれば良いでしょう
たぶん binフォルダーとかの中身がアップデートされていないのではないかと思います
DLLをBinフォルダに入れて これを参照しながら動作するはずなので
PreviousPageを取得するのに失敗しているのではと思います

まず確実に動くように ローカルのIISで開発したほうが良いように思いますよ

この回答への補足

おはようございます。
お返事遅れまして申し訳ありません。

ご回答感謝致します☆

WEBサーバーアップは完成後にしてとりあえずはローカル環境での完成を目指します。

WEBサーバーのフォルダは削除してローカルに持ってきたのですがやはり
NullReferenceExceptionはユーザーコードによってハンドルされませんでした。とのエラーがでました。。。

そもそものサイトの作り方が駄目なのでしょうか?
新しいWEBサイト→ASP.NET Webサービスといった具合で作成しているのですが・・・。

新しいWEBサイト→ASP.NETのWEBサイトで作成するとweb.configがなくエラーが出てしまうので(^ ^;)

ご教示頂けますでしょうか?

補足日時:2007/11/05 10:08
    • good
    • 0

ん~ どうも配置手順に問題があるのかなぁ


直接 VWDのプロジェクトを Webサーバに構築したのでしょうか

そうであるなら VWDで『サイトのビルド』または『サイトのリビルド』を実行してDLLの更新をしてみたほうが良いかも

もしかして 直接 Search_View.aspxをIEのアドレスバーに入力して表示していませんか
そうなると PureviousPageはNothingつまり何も無い状態なのでエラー(NullRefelenceException)になりますよ

同じフォルダにあって アプリケーションルートが Testまでなら
VirtualPathは 『~/left.aspx』でいいはずですね
PostBackで表示させるのが前提になっています
IEのアドレスバーで『Web』が無くなるのはWebサーバ側の公開方法によるものかもしれません

仮想ディレクトリで切ってあるのかも
たとえば
D:\Web\Dataを サーバー/dataで公開しているとか

この回答への補足

redfox63さま

ありがとうございます。
あまり記憶にはないのですが・・・

VWDで「新しいWEBサイト」でフォルダを作成しそこに作ったか
Cドライブなどに作ったファイルをそのままWEBサーバーに配置したかどちらかだった気がします。。。

サイトのビルドですか?
正常に作られていないのでしょうか。。。

IEのアドレスバーに入力するのはleft.sapxで検索にて値を入力してボタンでSearch_View.aspxに移行していますので直接は入力していないです。

会社の公開方法は分らないのですが仰る通り仮想ディレクトリで切ってあるのだと思われます。

本当にすみません。。。
よろしくお願い致します。

補足日時:2007/11/03 01:09
    • good
    • 0

> \\WEBサーバー\web\Data\webappl\Test\


このWebアプリのルートが何処になりますか?
1) \\WEBサーバー\web\Data\webappl\がルートなのか
2) \\WEBサーバー\web\Data\webappl\Test\までがルートなのか

1の場合なら ~/left.aspxとすると
WEBサーバ/web/data/webappl/left.aspx
Test/left.aspxに配置してあるなら ~/Test/left.aspxとします

2の場合なら ~/left.aspxとすると
WEBサーバ/web/data/webappl/Test/left.aspx
となります

この回答への補足

ありがとうございます☆

ファイルのルートは\\WEBサーバー\web\Data\webappl\Test\までとなっております。

仰る通りその場合なら
WEBサーバ/web/data/webappl/Test/left.aspxとなるので
IE表示のURLは
http://WEBサーバ/web/data/webappl/Test/left.aspx
なのですが会社のWEBは
http://WEBサーバ/data/webappl/Test/left.aspxで表示がされます。

すみません。
宜しくお願い致します。

補足日時:2007/11/02 20:19
    • good
    • 0

ん~ … VWDで実行して NullRefelenceExcptionが発生するなら


やはり VirtualPathで設定したページのURLが違っているのだと思います
PreviousPageはPageオブジェクトのプロパティとして.NET Frameworkに組み込まれています
myType()は独自に組み込んだプロパティなので Pageクラスには存在しません
したがって VWD(ASP.NET)は『そんなの知らないぞ』エラーが発生します

検索条件を入力するページのURLはどうなっていますか
これが分からないと アドバイスの使用がありません
サーバー名/Webアプリケーション名/Test/Web/Left.aspx
これが条件入力のページなのでしょうか …

きちんと設定できていれば IEから単独実行しても動作します
ローカル IISに配置して開発を行ったほうが効率的だと思いますよ

デバッグが終了してからプロジェクトを発行してやれば本番サーバへの移行もさほど難しくありません

この回答への補足

redfox63さま

ありがとうございます。
助かります。

NullRefelenceExcptionが発生するならうまくいった訳ではないのですね・・・

現在検索条件を入力するページ(left.aspx)のURLは仮としますが

<asp:Button ID="ButtonA" runat="server" Text="検索実行" PostBackUrl="~/Serch_View.aspx" CommandName="番号" Width="78px" />

表示側(serch_View.aspx)ですがVBに
<%@ PreviousPageType VirtualPath="~/left.aspx" %>
と書かれています。

Left.aspxとserch_View.aspxが配置してある場所は共に同じで
\\WEBサーバー\web\Data\webappl\Test\
となっております。

ですのでIEでのleft.aspx実行時は

http://WEBサーバー/Data/webappl/Test/left.aspx

と入力して表示されています。

宜しくお願い致します。

補足日時:2007/11/02 16:28
    • good
    • 0

ソリューションエクスプローラで表示されている階層構造がVirtual Pathと合致していますか



検索条件を入力するページは何処においてあるのでしょう
たとえば
このWebアプリのルートが http://localhost/TestWeb01 だとします
条件入力のページが Test/Data/SearchInput.aspxでしょうか
http://localhost/TestWeb01/Test/Data/SearchInput …
がフルパスです
~アプリケーションルート演算子を使うなら
~が localhost/TestWeb01 と置き換わるので
~/Test/Data/SearchInput.aspx
と表現できるわけです

この回答への補足

redfox63さん

ありがとうございます。
VWDの環境内での実行と言う事ですね。。。

すみません。今までWEBサーバー上にファイルを置いてVWDの環境内での実行ではなくIEから実行していました。

本当はIEから本番の様に実行してもエラーはでないのでしょうか??


またVWDにて実行した所
dim sType As String= PreviousPage.MyType()の所が黄色になり
NullReferenceExceptionはユーザーコードによってハンドルされませんでした。とのエラーがでました。

検索しても分からなかったので何度もすみませんがどうかご教示下さい。

補足日時:2007/11/02 13:53
    • good
    • 0

VWDなら大丈夫だと思うのですが …


<%@ PreviousPageType VirtualPath="~/Web/Test/Left.aspx" %>
の VirtualPathの記述があっていないのではないかと思います

VWDってインテリセンスが利きましたっけ?
<%@ PreviousPageType VirtualPath=
と入力した際に そのフォルダーにあるファイル名と『URLの選択』といったドロップダウンリストが表示されますか?
ここで Left.aspxが表示されているのでしょうか

上記のPreviousPageTypeディレクティブを正確に書き終えてから
ビルド > サイトのビルドを実行します

インテリセンスが利くのであれば スクリプト中に
PreviousPage.
と入力すると プロパティやメソッドの候補が現れます
この中に myKeyOneやmyProcOneがあるはずなんですが …

この回答への補足

ありがとうございます!

<%@ PreviousPageType VirtualPath="~/Web/Test/Left.aspx" %>が問題の様です。。。

インテリセンスは利きますので<%@ PreviousPageType VirtualPath=
と入力した際にファイル名のドロップダウンリストが表示されました。
そこでLeft.aspxが表示されたのでそれを選択しました。

すると並線は消えましたが実行すると「/test/serch.aspxは存在しません」と表示されたので少し変えたのだと思います。

<%@ PreviousPageType VirtualPath=のURLを少しでも変更するとまた並線が出るので原因はこれだと思います。

ご教示下さいませ。

補足日時:2007/11/02 10:39
    • good
    • 0

お使いの開発環境って何でしょう?


もしかしてWebMatrixですか、それとも VS2003なのでしょうか

VS2005 ASP.NET2.0として回答してましたが …

ASP.NET 1.0/1.1なら Sessionでデータ渡すって方法になりそうですが

この回答への補足

ありがとうございます。

環境はVisual Web Developer 2005 EEです。
バージョンはASP.NET2.0になります。

宜しくお願い致します。

補足日時:2007/11/01 15:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!