C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: ModalPopupのGridview選択時について


(過去ログ 88 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■52641 / inTopicNo.1)  ModalPopupのGridview選択時について
  
□投稿者/ まさひろ (23回)-(2010/08/18(Wed) 19:48:02)

分類:[ASP.NET (VB)] 

いつもお世話になります。まさひろです。

ASP.NET3.5(VWD2008)、ORACLE11で勉強をしています。
また分からないことがあり、ご教授頂きたく書き込ませていただきました。

検索画面をユーザーコントロールで作成、各画面のlistviewの検索ボタンを押下すると
検索画面が表示するような仕組みを作っています。
検索画面についてはajaxToolkitのModalPopupExtenderで表示しています。
検索画面でgridviewに一覧を表示するところまでは表示できました。
その後、gridviewの選択ボタンを押下することにより、各画面のlistviewの項目に選択した
値をセットしたいと思っています。
選択した値をセッションに保存するところまでは出来ています。

ところが、検索画面のgridviewの選択ボタンを押下したことを各画面のどのイベントでどういう風に拾うのか
が分からず困っています。
もしお分かりの方いましたらご教授願えないでしょうか。
宜しくお願いいたします。
引用返信 編集キー/
■52656 / inTopicNo.2)  Re[1]: ModalPopupのGridview選択時について
□投稿者/ もりお (263回)-(2010/08/19(Thu) 09:35:15)
No52641 (まさひろ さん) に返信

> ところが、検索画面のgridviewの選択ボタンを押下したことを各画面のどのイベントでどうい
> う風に拾うのかが分からず困っています。

ユーザーコントロールで選択されましたよイベントを発生させて、各ページに選択されましたよ
イベントのハンドラを記述するとよいのではないでしょうか。

[ユーザーコントロール]
Partial Public Class WebUserControl
  Inherits System.Web.UI.UserControl

  Public Event Selected As EventHandler(Of WebUserControlSelectedEventArgs)

  Protected Overridable Sub OnSelected(ByVal e As WebUserControlSelectedEventArgs)
    RaiseEvent Selected(Me, e)
  End Sub

  Private Sub GridView1_SelectedIndexChanged( _
      ByVal sender As Object, _
      ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
    OnSelected(New WebUserControlSelectedEventArgs())
  End Sub
End Class

Public Class WebUserControlSelectedEventArgs
  Inherits EventArgs

End Class

[各画面]
Partial Public Class WebForm
  Inherits System.Web.UI.Page

  Private Sub WebUserControl1_Selected( _
      ByVal sender As Object, _
      ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected
    ...
  End Sub

End Class

引用返信 編集キー/
■52660 / inTopicNo.3)  Re[2]: ModalPopupのGridview選択時について
□投稿者/ まさひろ (24回)-(2010/08/19(Thu) 11:21:59)
もりおさん、いつも本当にお世話になります。


> ユーザーコントロールで選択されましたよイベントを発生させて、各ページに選択されましたよ
> イベントのハンドラを記述するとよいのではないでしょうか。
>
> [ユーザーコントロール]
> Partial Public Class WebUserControl
> Inherits System.Web.UI.UserControl
>
> Public Event Selected As EventHandler(Of WebUserControlSelectedEventArgs)
>
> Protected Overridable Sub OnSelected(ByVal e As WebUserControlSelectedEventArgs)
> RaiseEvent Selected(Me, e)
> End Sub
>
> Private Sub GridView1_SelectedIndexChanged( _
> ByVal sender As Object, _
> ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
> OnSelected(New WebUserControlSelectedEventArgs())
> End Sub
> End Class
>
> Public Class WebUserControlSelectedEventArgs
> Inherits EventArgs
>
> End Class
>
> [各画面]
> Partial Public Class WebForm
> Inherits System.Web.UI.Page
>
> Private Sub WebUserControl1_Selected( _
> ByVal sender As Object, _
> ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected
> ...
> End Sub
>
> End Class
>

ユーザーコントロールには処理を追加することが出来ました。
しかし、各画面での処理なんですが、WebUserControlSelectedEventArgsとWebUserControl1が
定義されていませんと出てしまいます。

Public WebUserControl1 As WebUserControlと言うふうにに宣言してるのですが、
宣言の仕方が悪いのでしょうか?



引用返信 編集キー/
■52664 / inTopicNo.4)  Re[3]: ModalPopupのGridview選択時について
□投稿者/ もりお (264回)-(2010/08/19(Thu) 14:03:33)
No52660 (まさひろ さん) に返信

> しかし、各画面での処理なんですが、WebUserControlSelectedEventArgsとWebUserControl1が
> 定義されていませんと出てしまいます。

定義されていないか、もしくは定義はされているけれども参照不可能ということではないでしょうか。

> Public WebUserControl1 As WebUserControlと言うふうにに宣言してるのですが、
> 宣言の仕方が悪いのでしょうか?

変数 WebUserControl1 の宣言としては問題ないように思います。
アクセス修飾詞が Public であったり WithEvents 句がなかったりするのは気になりますが、
上記の WebUserControlSelectedEventArgs が定義されていないというエラーメッセージは
クラスを参照できないという意味なので関連性は低いと思います。

WebUserControl、WebUserControlSelectedEventArgs クラスが記述されていて、参照可能
な名前空間にあるかといったあたりを見直してみてはいかがでしょうか。

引用返信 編集キー/
■52666 / inTopicNo.5)  Re[4]: ModalPopupのGridview選択時について
□投稿者/ まさひろ (25回)-(2010/08/19(Thu) 14:45:12)
もりおさん、ありがとうございます。

>
> 変数 WebUserControl1 の宣言としては問題ないように思います。
> アクセス修飾詞が Public であったり WithEvents 句がなかったりするのは気になりますが、
> 上記の WebUserControlSelectedEventArgs が定義されていないというエラーメッセージは
> クラスを参照できないという意味なので関連性は低いと思います。
>
> WebUserControl、WebUserControlSelectedEventArgs クラスが記述されていて、参照可能
> な名前空間にあるかといったあたりを見直してみてはいかがでしょうか。
>

Private WithEvents WebUserControl1 As WebUserControl
としてみたところ、エラーはなくなりました。

ただ、実行したところ、

Private Sub WebUserControl1_Selected( _
ByVal sender As Object, _
ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected
...
End Sub

に処理がきていません。

ちなみに

Public Class WebUserControlSelectedEventArgs
Inherits EventArgs

End Class

の中には処理は書かなくてもいいんですよね?
いろいろとご迷惑をおかけします;
引用返信 編集キー/
■52667 / inTopicNo.6)  Re[5]: ModalPopupのGridview選択時について
□投稿者/ もりお (265回)-(2010/08/19(Thu) 17:47:35)
No52666 (まさひろ さん) に返信

> Private WithEvents WebUserControl1 As WebUserControl 
> としてみたところ、エラーはなくなりました。

あら。

> Private Sub WebUserControl1_Selected( _
>     ByVal sender As Object, _
>     ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected
>   ...
> End Sub
>
> に処理がきていません。

原因として考えられるのは WebUserControl でイベントが発生していない、もしくはイベントは
発生しているが WebUserControl のインスタンスが異なるといったあたりではないでしょうか。
WebUserControl1 の変数定義を記述していらっしゃるところを見ると
WebUserControl1 のインスタンスはコードで明示的に作成しているのでしょうか。
ページのコードをまるごとお教えいただけないでしょうか。

> Public Class WebUserControlSelectedEventArgs
>   Inherits EventArgs
> 
> End Class
> 
> の中には処理は書かなくてもいいんですよね?

とりあえずは必要ありません。イベントハンドラーに引数で値を渡したくなったら
適宜実装してください。

引用返信 編集キー/
■52678 / inTopicNo.7)  Re[6]: ModalPopupのGridview選択時について
□投稿者/ まさひろ (26回)-(2010/08/20(Fri) 10:00:10)
2010/08/20(Fri) 10:13:26 編集(投稿者)
2010/08/20(Fri) 10:13:18 編集(投稿者)

もりおさん、いつもいつもありがとうございます。

> 原因として考えられるのは WebUserControl でイベントが発生していない、もしくはイベントは
> 発生しているが WebUserControl のインスタンスが異なるといったあたりではないでしょうか。
> WebUserControl1 の変数定義を記述していらっしゃるところを見ると
> WebUserControl1 のインスタンスはコードで明示的に作成しているのでしょうか。
> ページのコードをまるごとお教えいただけないでしょうか。
>


[ユーザーコントロール]
Partial Class WebUserControl
Inherits System.Web.UI.UserControl

Public Event Selected As EventHandler(Of WebUserControlSelectedEventArgs)

Protected Overridable Sub OnSelected(ByVal e As WebUserControlSelectedEventArgs)
RaiseEvent Selected(Me, e)
End Sub

Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
GridView1.DataSourceID = ObjectDataSource1.ID
End Sub

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
Session.Add("CD", DirectCast(GridView1.SelectedRow.FindControl("lbl_CD"), Label).Text)
Session.Add("NAME", DirectCast(GridView1.SelectedRow.FindControl("lbl_NAME"), Label).Text)

OnSelected(New WebUserControlSelectedEventArgs())
End Sub
End Class

Public Class WebUserControlSelectedEventArgs
Inherits EventArgs

End Class

[画面]
Partial Class pages_aspx_Defult
Inherits System.Web.UI.Page

Private WithEvents WebUserControl1 As WebUserControl


Protected Sub btnSerch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSerch.Click

ListView1.DataSourceID = ObjectDataSource1.ID
End Sub


Protected Sub ListView1_ItemDeleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewDeletedEventArgs) Handles ListView1.ItemDeleted
ListView1.DataSourceID = ObjectDataSource1.ID
End Sub

Protected Sub ListView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewInsertedEventArgs) Handles ListView1.ItemInserted
ListView1.DataSourceID = ObjectDataSource1.ID
End Sub

Protected Sub ListView1_ItemUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewUpdatedEventArgs) Handles ListView1.ItemUpdated
ListView1.DataSourceID = ObjectDataSource1.ID
End Sub

Private Sub WebUserControl1_Selected(ByVal sender As Object, ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected

DirectCast(ListView1.InsertItem.FindControl("CD"), Label).Text = Session("CD")
DirectCast(ListView1.InsertItem.FindControl("NAME"), Label).Text = Session("NAME")

End Sub

End Class

コードをあげさせていただきました。
すみませんが、宜しくお願いいたします。
引用返信 編集キー/
■52681 / inTopicNo.8)  Re[7]: ModalPopupのGridview選択時について
□投稿者/ もりお (266回)-(2010/08/20(Fri) 10:56:27)
No52678 (まさひろ さん) に返信

変数 WebUserControl1 にインスタンスがセットされないので本来は選択イベント以前に
ユーザーコントロール自体表示されないはずです。

ユーザーコントロールが表示されるとするならば自動的に作成されるインスタンスと言いますか、
デザイナ画面で配置したユーザーコントロールがあるのではなかろうかと思うわけなのですが
aspx の方のコードもお教えいただけないでしょうか。

引用返信 編集キー/
■52683 / inTopicNo.9)  Re[8]: ModalPopupのGridview選択時について
□投稿者/ まさひろ (27回)-(2010/08/20(Fri) 13:32:59)
もりおさん、いつもいつもありがとうございます。

>
> ■No52678 (まさひろ さん) に返信
>
> 変数 WebUserControl1 にインスタンスがセットされないので本来は選択イベント以前に
> ユーザーコントロール自体表示されないはずです。
>
> ユーザーコントロールが表示されるとするならば自動的に作成されるインスタンスと言いますか、
> デザイナ画面で配置したユーザーコントロールがあるのではなかろうかと思うわけなのですが
> aspx の方のコードもお教えいただけないでしょうか。
>

もりおさんのご指摘により、
ASPX側のほうを見て、ひょっとしてと思い修正したところ、WebUserControl1_Selectedに飛んできました!!

aspx側では
<%@ Register TagPrefix="Uc1" TagName="WebUserControl" Src="~/common/ascx/WebUserControl.ascx" %>

と宣言し、

listviewのInsertItemTemplateのなかで

<asp:Button ID="btnSearch" runat="server" Text="検索" />
<ajaxToolkit:ModalPopupExtender ID="modal" runat="server"
TargetControlID="btnSearch" PopupControlID="pnl"
BackgroundCssClass="modalBackground"
Drag="true" PopupDragHandleControlID="pnl" CancelControlID="btnClose" />
<asp:Panel ID="pnl" runat="server" BackColor="#FFFF66">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<Uc1:WebUserControl ID="WebUserControl" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnClose" runat="server" Text="閉じる" />
</asp:Panel>

としていました。
Private WithEvents WebUserControl1 As WebUserControlを削除し
<Uc1:WebUserControl ID="WebUserControl" runat="server" />のIDをWebUserControl1としたところ、

うまくいきました。
本当にありがとうございました。

ただ、もう一点お聞きしてもよろしいでしょうか?
(別スレッドを立てたほうがよければそうします。)

Private Sub WebUserControl1_Selected(ByVal sender As Object, ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected

DirectCast(ListView1.InsertItem.FindControl("CD"), Label).Text = Session("CD")
DirectCast(ListView1.InsertItem.FindControl("NAME"), Label).Text = Session("NAME")

End Sub

で、ラベルにセットした後、ポップアップを閉じたいのですが、どのような処理をすべきなのでしょうか?
CancelControlIDにはラベルに閉じるボタンを置いて、そのボタンを関連付けています。
今回、選択ボタンをおしたときにも、親画面で値を設定した後、ポップアップを閉じるようにしたいのです。

引用返信 編集キー/
■52685 / inTopicNo.10)  Re[9]: ModalPopupのGridview選択時について
□投稿者/ もりお (267回)-(2010/08/20(Fri) 14:34:08)
No52683 (まさひろ さん) に返信

> ただ、もう一点お聞きしてもよろしいでしょうか?
>(別スレッドを立てたほうがよければそうします。)

新規でスレッドを作成した方がよいかと思います。
質問にたどり着く前にスクロールしている途中で力尽きる、というリスクを回避することが
できます。

引用返信 編集キー/
■52687 / inTopicNo.11)  Re[10]: ModalPopupのGridview選択時について
□投稿者/ まさひろ (28回)-(2010/08/20(Fri) 14:56:59)
もりおさん、ありがとうございます。

>>ただ、もう一点お聞きしてもよろしいでしょうか?
> >(別スレッドを立てたほうがよければそうします。)
>
> 新規でスレッドを作成した方がよいかと思います。
> 質問にたどり着く前にスクロールしている途中で力尽きる、というリスクを回避することが
> できます。
>

了解しました。
新規にスレッドを立ち上げさせていただきます。
本件について、非常に助かりました。ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -