自分のために、あなたのために書いておきます。
ポップアップ画面にはグリッドが配置されていて、グリッドで選択したデータの値を
呼び出し元のラベルに表示します。
ついでにグリッドのデータは検索で絞り込みができるようにします。
呼び出し元画面には検索ワードを入れるテキストボックスがあり、
ポップアップ表示ボタンを押すと、ポップアップ画面に検索ワードを渡し、ポップアップ表示します。
文章で説明は面倒なのでコード読んでね。
ではまずポップアップ画面から作成です。
ポップアップ画面は使いまわせるようにユーザーコントロールで作成しました。
ModalPopupSample.aspxのデザイナです。
ModalPopupExtenderの設定に注目です。
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="PopUp.ascx.vb" Inherits="WebApplication1.PopUp" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Panel ID="pnlPopup" runat="server" BackColor="#C0C0FF">
<asp:UpdatePanel ID="updPopup" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnDummy" runat="server" Text="" Style="display: none" />
<asp:ModalPopupExtender ID="modalPopupExtender" runat="server"
TargetControlID="btnDummy"
BackgroundCssClass="modalBackground"
DropShadow="true"
PopupControlID="pnlPopup"
PopupDragHandleControlID="pnlTitle"
CancelControlID="btnCancel" />
<asp:Panel ID="pnlTitle" runat="server">
ここにタイトル
</asp:Panel>
<div>
ここに内容
<br />
検索条件:<asp:TextBox ID="txtSearch" runat="server"/><asp:Button ID="btnSearch" runat="server" Text="表示" />
<asp:GridView ID="gvList" runat="server">
<Columns>
<asp:TemplateField HeaderText="選択">
<ItemTemplate>
<asp:LinkButton ID="lnkbtnSelect" runat="server" CommandName="select">選択</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="列1">
<ItemTemplate>
<asp:Label ID="lblCol1" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="列2">
<ItemTemplate>
<asp:Label ID="lblCol2" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnCancel" runat="server" Text="閉じる" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
ModalPopupSample.aspxのコードです。
Public Class PopUp
Inherits System.Web.UI.UserControl
''' <summary>
''' ダイアログを閉じたイベントのイベント引数
''' </summary>
''' <remarks></remarks>
Public Class ClosedEventArgs
Public Property Col1Value As String
Public Property Col2Value As String
End Class
''' <summary>
''' ダイアログを閉じた際のイベント
''' </summary>
''' <param name="arg"></param>
''' <remarks></remarks>
Public Event DialogClosed(arg As ClosedEventArgs)
''' <summary>
''' ポップアップウインドウを表示
''' </summary>
''' <remarks></remarks>
Public Sub Show(sArg As String)
Me.txtSearch.Text = sArg
Me.gvList.Visible = True
If Not String.IsNullOrEmpty(Me.txtSearch.Text) Then
SetGridData()
End If
Me.updPopup.Update()
Me.modalPopupExtender.Show()
End Sub
''' <summary>
''' 表示ボタンClickイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Me.gvList.Visible = True
SetGridData()
Me.updPopup.Update()
Me.modalPopupExtender.Show()
End Sub
''' <summary>
''' グリッドのRowDataBoundイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub gvList_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvList.RowDataBound
If e.Row.RowType <> DataControlRowType.DataRow Then
Return
End If
Dim drv As DataRowView = DirectCast(e.Row.DataItem, DataRowView)
'選択
Dim args() As String = New String() {drv.Item("col1").ToString(), drv.Item("col2").ToString()}
Dim lnkbtnSelect As LinkButton = DirectCast(e.Row.FindControl("lnkbtnSelect"), LinkButton)
lnkbtnSelect.CommandArgument = String.Join(",", args)
'列1
Dim lblCol1 As Label = DirectCast(e.Row.FindControl("lblCol1"), Label)
lblCol1.Text = drv.Item("col1").ToString()
'列2
Dim lblCol2 As Label = DirectCast(e.Row.FindControl("lblCol2"), Label)
lblCol2.Text = drv.Item("col2").ToString()
End Sub
''' <summary>
''' グリッドのRowCommandイベント
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub gvList_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gvList.RowCommand
Me.gvList.Visible = False
Me.modalPopupExtender.Hide()
Dim args() As String = e.CommandArgument.ToString.Split(","c)
Dim eventArgs As New ClosedEventArgs
eventArgs.Col1Value = args(0)
eventArgs.Col2Value = args(1)
RaiseEvent DialogClosed(eventArgs)
End Sub
''' <summary>
''' グリッドデータ表示
''' </summary>
''' <remarks></remarks>
Private Sub SetGridData()
'データ取得
Dim sSearch As String = Me.txtSearch.Text
Dim tbl As New DataTable
tbl.Columns.Add(New DataColumn("col1", GetType(String)))
tbl.Columns.Add(New DataColumn("col2", GetType(String)))
For idx As Integer = 1 To 10
tbl.Rows.Add(New Object() {idx.ToString, sSearch & idx.ToString})
Next
Me.gvList.DataSource = tbl
Me.gvList.DataBind()
End Sub
次に呼び出し画面の作成です。
Default.aspxのデザイナです。
ToolkitScriptManagerを配置し、先ほど作成したPopUpユーザーコントロールを配置します。
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Src="~/PopUp.ascx" TagPrefix="uc1" TagName="PopUp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
検索条件:<asp:TextBox ID="txtSearch" runat="server" /><asp:Button ID="btnShowPopup" runat="server" Text="ポップアップ表示" /><br />
列1:<asp:Label ID="lblCol1Value" runat="server"/><br />
列2:<asp:Label ID="lblCol2Value" runat="server"/><br />
</ContentTemplate>
</asp:UpdatePanel>
</div>
<uc1:PopUp runat="server" id="PopUp" />
</form>
</body>
</html>
Default.aspxのコードです。
Public Class _Default
Inherits System.Web.UI.Page
Private Sub btnShowPopup_Click(sender As Object, e As EventArgs) Handles btnShowPopup.Click
'ポップアップ画面の表示
Me.PopUp.Show(Me.txtSearch.Text)
End Sub
Private Sub ModalPopupSample_DialogClosed(arg As PopUp.ClosedEventArgs) Handles PopUp.DialogClosed
'ポップアップ画面を閉じたとき
Me.lblCol1Value.Text = arg.Col1Value
Me.lblCol2Value.Text = arg.Col2Value
Me.UpdatePanel1.Update()
End Sub
End Class
説明は以上!!