ASP.NETでshowModalDialogを使わずに、モーダル表示
* 全然改良の余地(CSSなど)があり、そもそもモーダルになっていないが、とりあえずサンプルを記す
サンプル
WebUserControl1.ascx
<%@ Control Language="vb" AutoEventWireup="false"
CodeBehind="WebUserControl1.ascx.vb"
Inherits="WebApplication1.WebUserControl1" %>
<asp:Panel ID="Panel1" runat="server" Visible="False">
<asp:Panel ID="Panel2" runat="server" Wrap="False" BackColor="#C0C0FF">
<p>Please Input your data :</p>
<p>
<asp:TextBox ID="Text1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="決定" />
<asp:Button ID="Button2" runat="server" Text="キャンセル" style="height: 21px" />
</p>
</asp:Panel>
</asp:Panel>
WebUserControl1.ascx.vb
Public Class WebUserControl1
Inherits System.Web.UI.UserControl
Public Event ClickOK(ByVal sender As Object, ByVal e As EventArgs)
Public Event ClickCancel(ByVal sender As Object, ByVal e As EventArgs)
Public Property DialogVisible As Boolean
Set(value As Boolean)
Me.Panel1.Visible = value
End Set
Get
Return Me.Panel1.Visible
End Get
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
sender = Me.Text1.Text
RaiseEvent ClickOK(sender, e)
Me.Panel1.Visible = False
End Sub
Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
RaiseEvent ClickCancel(sender, e)
Me.Panel1.Visible = False
End Sub
End Class
使用する側
WebForm1.aspx
<asp:LinkButton ID="LinkButton1" runat="server">ポップアップ</asp:LinkButton><br />
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
WebForm1.aspx.vb
Protected Sub LinkButton1_Click(sender As Object, e As EventArgs) Handles LinkButton1.Click
Me.WebUserControl11.DialogVisible = True
End Sub
Private Sub DialogClickOK(ByVal sender As Object, ByVal e As EventArgs) Handles WebUserControl11.ClickOK
Dim value As String = sender.ToString()
Me.Label1.Text = value
End Sub