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

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

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

Re[8]: modalpopupのクローズについて


(過去ログ 89 を表示中)

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

■52688 / inTopicNo.1)  modalpopupのクローズについて
  
□投稿者/ まさひろ (29回)-(2010/08/20(Fri) 15:18:59)

分類:[ASP.NET (VB)] 

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

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

検索画面をユーザーコントロールで作成、各画面のlistviewの検索ボタンを押下すると
modalpopupで検索画面が表示され、選択ボタンを押下すると元の画面のlistviewに反映するような仕組みを作っています。

本当にいろいろとご教授いただき、ユーザーコントロールのlistviewの選択ボタンを押し、元の画面にイベントを発生
させるところまでは完了しました。
ですが、元の画面で、modalpopupをcloseする方法が分からず困っております。

以下のロジックは元の画面に戻ったときに、検索画面からの値を渡しているところです。

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

この処理で、最後にmodalpopupをクローズしたいのですが、どのようにすればよいのか
ご教授願えないでしょうか。


なお、modalpopupは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="WebUserControl1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnClose" runat="server" Text="閉じる" />
</asp:Panel>

宜しくお願いいたします。

引用返信 編集キー/
■52689 / inTopicNo.2)  Re[1]: modalpopupのクローズについて
□投稿者/ たらのめ (1回)-(2010/08/20(Fri) 15:34:37)
modalpopup.Hide()でいけるような気がします。
試してないので違ってたらすみませんm(_ _)m
引用返信 編集キー/
■52834 / inTopicNo.3)  Re[2]: modalpopupのクローズについて
□投稿者/ まさひろ (30回)-(2010/08/25(Wed) 10:08:03)
たらのめさん、ありがとうございます。


> modalpopup.Hide()でいけるような気がします。
> 試してないので違ってたらすみませんm(_ _)m

listviewの中で宣言しているmodalpopupの場合、

modal.Hide()としても「名前modalは宣言されていません。」と出てしまいます。
テキストボックスみたいにFindControlのような形にしないといけないのでしょうか?

引用返信 編集キー/
■52891 / inTopicNo.4)  Re[3]: modalpopupのクローズについて
□投稿者/ もりお (268回)-(2010/08/26(Thu) 21:48:45)
2010/08/26(Thu) 21:50:44 編集(投稿者)
No52834 (まさひろ さん) に返信

> modal.Hide()としても「名前modalは宣言されていません。」と出てしまいます。
> テキストボックスみたいにFindControlのような形にしないといけないのでしょうか?

はい。名前付けコンテナーが異なるため modal を FindControl で取得する必要があります。

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

ところで、よくよく考えてみると WebUserControl1 も ListView の InsertItemTemplate
内に配置されているのですよね。そうすると Handles 句は使えないように思うのですが、特別な
コードを記述されていらっしゃるのでしょうか。

引用返信 編集キー/
■52899 / inTopicNo.5)  Re[4]: modalpopupのクローズについて
□投稿者/ まさひろ (31回)-(2010/08/27(Fri) 09:29:31)
No52891 (もりお さん) に返信
もりおさん、いつもありがとうございます。


>>modal.Hide()としても「名前modalは宣言されていません。」と出てしまいます。
>>テキストボックスみたいにFindControlのような形にしないといけないのでしょうか?
>
> はい。名前付けコンテナーが異なるため modal を FindControl で取得する必要があります。

DirectCast(ListView1.InsertItem.FindControl("modal"), AjaxControlToolkit.ModalPopupExtender).Hide()
とすることでモーダルポップアップを削除することが出来ました。

しかし、listviewのラベルに反映したはずの値が表示されません・・・・・
DirectCast(ListView1.InsertItem.FindControl("CD"), Label).Text = Session("CD")
と言う形で反映しているのですが、いざlistviewが表示されると空白で表示されてしまいます。
Session("CD")には'1'が入っていることを確認しています。
記述の仕方が悪いのでしょうか?

>
>>Private Sub WebUserControl1_Selected( _
>> ByVal sender As Object, _
>> ByVal e As WebUserControlSelectedEventArgs) Handles WebUserControl1.Selected
>
> ところで、よくよく考えてみると WebUserControl1 も ListView の InsertItemTemplate
> 内に配置されているのですよね。そうすると Handles 句は使えないように思うのですが、特別な
> コードを記述されていらっしゃるのでしょうか。
>

言われてみれば確かにそうだな・・・・
と僕も思いましたが特別なコードは記述していません。
もりおさんにご教授いただいたとおり記述したところ、Handles句も使えています。

以下、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="WebUserControl1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnClose" runat="server" Text="閉じる" />
</asp:Panel>






引用返信 編集キー/
■52906 / inTopicNo.6)  Re[5]: modalpopupのクローズについて
□投稿者/ もりお (269回)-(2010/08/27(Fri) 13:53:01)
No52899 (まさひろ さん) に返信

> DirectCast(ListView1.InsertItem.FindControl("CD"), Label).Text = Session("CD")
> と言う形で反映しているのですが、いざlistviewが表示されると空白で表示されてしまいます。
> Session("CD")には'1'が入っていることを確認しています。
> 記述の仕方が悪いのでしょうか?

値をセットするところは問題ないように思います。
aspx のコードを全てお教えいただけないでしょうか。

> もりおさんにご教授いただいたとおり記述したところ、Handles句も使えています。

むー。私の環境では ListView 内に配置すると、ハンドラーの定義のところで

Protected Sub WebUserControl1_Selected( _
    ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles WebUserControl1.Selected

HANDLES 句には、それを含む型または基本型の 1 つで定義された WithEvents 変数が必要です。	
というエラーになります。

引用返信 編集キー/
■52940 / inTopicNo.7)  Re[6]: modalpopupのクローズについて
□投稿者/ まさひろ (32回)-(2010/08/30(Mon) 10:24:41)
もりおさん、いつもありがとうございます。
そして、おそくなってすみません。

asp側

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register TagPrefix="Uc1" TagName="WebUserControl" Src="~/common/ascx/WebUserControl.ascx" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<!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">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:ListView ID="ListView1" runat="server" DataKeyNames="OrderID"
DataSourceID="SqlDataSource1" InsertItemPosition="LastItem">
<ItemTemplate>
<tr style="background-color:#DCDCDC;color: #000000;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="OrderIDLabel" runat="server" Text='<%# Eval("OrderID") %>' />
</td>
<td>
<asp:Label ID="CD" runat="server"
Text='<%# Eval("CD") %>' />
</td>
<td>
<asp:Label ID="EmployeeIDLabel" runat="server"
Text='<%# Eval("EmployeeID") %>' />
</td>
<td>
<asp:Label ID="ShipNameLabel" runat="server" Text='<%# Eval("ShipName") %>' />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color:#FFF8DC;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="OrderIDLabel" runat="server" Text='<%# Eval("OrderID") %>' />
</td>
<td>
<asp:Label ID="CD" runat="server"
Text='<%# Eval("CD") %>' />
</td>
<td>
<asp:Label ID="EmployeeIDLabel" runat="server"
Text='<%# Eval("EmployeeID") %>' />
</td>
<td>
<asp:Label ID="ShipNameLabel" runat="server" Text='<%# Eval("ShipName") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<EmptyDataTemplate>
<table runat="server"
style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
<tr>
<td>
データは返されませんでした。</td>
</tr>
</table>
</EmptyDataTemplate>
<InsertItemTemplate>
<tr style="">
<td>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="挿入" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="クリア" />
</td>
<td>
<asp:TextBox ID="OrderIDTextBox" runat="server" Text='<%# Bind("OrderID") %>' />
</td>
<td>
<asp:Label ID="CD" runat="server"
Text='<%# Eval("CD") %>' Width="150px" />
<asp:Button ID="btnSearch" runat="server" Text="検索" />
<asp: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="WebUserControl1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnClose" runat="server" Text="閉じる" />
</asp:Panel>
</td>
<td>
<asp:TextBox ID="EmployeeIDTextBox" runat="server"
Text='<%# Bind("EmployeeID") %>' />
</td>
<td>
<asp:TextBox ID="ShipNameTextBox" runat="server"
Text='<%# Bind("ShipName") %>' />
</td>
</tr>
</InsertItemTemplate>
<LayoutTemplate>
<table runat="server">
<tr runat="server">
<td runat="server">
<table ID="itemPlaceholderContainer" runat="server" border="0" style="table-layout:fixed;width:100%;" >
<tr runat="server" style="">
<th runat="server">
</th>
<th runat="server">
OrderID</th>
<th runat="server" style="width:200px;">
CD</th>
<th runat="server">
EmployeeID</th>
<th runat="server">
ShipName</th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server"
style="text-align: center;background-color: #CCCCCC;font-family: Verdana, Arial, Helvetica, sans-serif;color: #000000;">
<asp:DataPager ID="DataPager1" runat="server">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</td>
</tr>
</table>
</LayoutTemplate>
<EditItemTemplate>
<tr style="background-color:#008A8C;color: #FFFFFF;">
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel"
Text="キャンセル" />
</td>
<td>
<asp:Label ID="OrderIDLabel1" runat="server"
Text='<%# Eval("OrderID") %>' />
</td>
<td>
<asp:TextBox ID="CD" runat="server"
Text='<%# Bind("CD") %>' />
</td>
<td>
<asp:TextBox ID="EmployeeIDTextBox" runat="server"
Text='<%# Bind("EmployeeID") %>' />
</td>
<td>
<asp:TextBox ID="ShipNameTextBox" runat="server"
Text='<%# Bind("ShipName") %>' />
</td>
</tr>
</EditItemTemplate>


続く・・・
引用返信 編集キー/
■52941 / inTopicNo.8)  Re[7]: modalpopupのクローズについて
□投稿者/ まさひろ (33回)-(2010/08/30(Mon) 10:27:03)
<SelectedItemTemplate>
<tr style="background-color:#008A8C;font-weight: bold;color: #FFFFFF;">
<td>
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="OrderIDLabel" runat="server"
Text='<%# Eval("OrderID") %>' />
</td>
<td>
<asp:Label ID="CD" runat="server"
Text='<%# Eval("CD") %>' />
</td>
<td>
<asp:Label ID="EmployeeIDLabel" runat="server"
Text='<%# Eval("EmployeeID") %>' />
</td>
<td>
<asp:Label ID="ShipNameLabel" runat="server" Text='<%# Eval("ShipName") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NwindSQL.mdf;Integrated Security=True;User Instance=True"
DeleteCommand="DELETE FROM [Orders] WHERE [OrderID] = @OrderID"
InsertCommand="INSERT INTO [Orders] ([OrderID], [CustomerID], [EmployeeID], [ShipName]) VALUES (@OrderID, @CD, @EmployeeID, @ShipName)"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [OrderID], [CustomerID] AS CD, [EmployeeID], [ShipName] FROM [Orders]"
UpdateCommand="UPDATE [Orders] SET [CustomerID] = @CD, [EmployeeID] = @EmployeeID, [ShipName] = @ShipName WHERE [OrderID] = @OrderID">
<DeleteParameters>
<asp:Parameter Name="OrderID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="CD" Type="Int32" />
<asp:Parameter Name="EmployeeID" Type="Int32" />
<asp:Parameter Name="ShipName" Type="String" />
<asp:Parameter Name="OrderID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="OrderID" Type="Int32" />
<asp:Parameter Name="CD" Type="Int32" />
<asp:Parameter Name="EmployeeID" Type="Int32" />
<asp:Parameter Name="ShipName" Type="String" />
</InsertParameters>
</asp:SqlDataSource>

</div>
</form>
</body>
</html>

aspx.vb側


Partial Class _Default
Inherits System.Web.UI.Page

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("modal"), AjaxControlToolkit.ModalPopupExtender).Hide()
End Sub

End Class


タブとか入れてるはずなんですが反映されませんね・・・
見えにくくてすみません。




引用返信 編集キー/
■52942 / inTopicNo.9)  Re[8]: modalpopupのクローズについて
□投稿者/ ごう (168回)-(2010/08/30(Mon) 10:29:04)
2010/08/30(Mon) 10:32:59 編集(投稿者)

No52941 (まさひろ さん) に返信

> タブとか入れてるはずなんですが反映されませんね・・・
> 見えにくくてすみません。


投稿モードの「図表モード」にチェックを入れれば反映されますよ。
編集画面でも出来ますので、以後ソースコードを貼り付ける際は注意してみてください。
引用返信 編集キー/
■52943 / inTopicNo.10)  Re[9]: modalpopupのクローズについて
□投稿者/ まさひろ (34回)-(2010/08/30(Mon) 10:34:10)
ごうさん、ありがとうございます。

> 投稿モードの「図表モード」にチェックを入れれば解決しますよ。
> 編集画面でも出来ますので、以後ソースコードを貼り付ける際は注意してみてください。

そうなんですね・・・
以後、図表モードにチェックを入れるようにします。
教えていただいてありがとうございます。
引用返信 編集キー/
■52953 / inTopicNo.11)  Re[7]: modalpopupのクローズについて
□投稿者/ もりお (271回)-(2010/08/30(Mon) 16:14:59)
No52940 (まさひろ さん) に返信

> <asp:UpdatePanel ID="UpdatePanel1" runat="server">
>   <ContentTemplate>
>     <Uc1:WebUserControl ID="WebUserControl1" runat="server" />
>   </ContentTemplate>
> </asp:UpdatePanel>

WebUserControl1 は UpdatePanel1 内に配置されているのでポストバック時に
部分レンダリングが行われるのですが

> <td>
>   <asp:Label ID="CD" runat="server" Text='<%# Eval("CD") %>' Width="150px" />

Label コントロール CD は UpdatePanel コントロール外にあるので部分レンダリングの
対象外です。
おそらくはこれが Label に値が反映されない原因ではなかろうかと思います。

<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline">
  <ContentTemplate>
    <asp:Label ID="CD" runat="server" Text='<%# Eval("CD") %>' Width="150px" />          
  </ContentTemplate>
</asp:UpdatePanel>

こんな感じで Label コントロール CD を UpdatePanel コントロール内に配置してみてはい
かがでしょうか。

引用返信 編集キー/
■52961 / inTopicNo.12)  Re[8]: modalpopupのクローズについて
□投稿者/ まさひろ (35回)-(2010/08/30(Mon) 17:12:39)
もりおさん、いつもありがとうございます。

> Label コントロール CD は UpdatePanel コントロール外にあるので部分レンダリングの
> 対象外です。
> おそらくはこれが Label に値が反映されない原因ではなかろうかと思います。
>
> <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline">
> <ContentTemplate>
> <asp:Label ID="CD" runat="server" Text='<%# Eval("CD") %>' Width="150px" />
> </ContentTemplate>
> </asp:UpdatePanel>
>
> こんな感じで Label コントロール CD を UpdatePanel コントロール内に配置してみてはい
> かがでしょうか。
>

Label コントロールをUpdatePanel コントロール内に配置したところ、表示されました!!
本当に助かりました。いつもいつもありがとうございます。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -