none
画面遷移後に戻った際の画面表示位置について RRS feed

  • 質問

  • A画面から、B画面に遷移し、再度、A画面に戻った際のA画面の表示を

    B画面に遷移する際の、ボタンの位置で画面表示したいですが、方法を教えてください。

    今は、無条件に、B画面からの戻りは、A画面の先頭行から、表示されています。

    B画面に遷移する選択したボタンは、A画面下にあるため、すぐに、情報が参照できないので、
    A画面でB画面へ遷移する選択したボタン付近の先頭行で表示したいと考えています。

    よろしくお願いします。


    環境は以下の通りです。

    システム : Wicrosoft Windows 2000 Service Pack4
    DB : SQL Server 2005

    Microsoft Visual Web Developer 2005 Express Edition
    NET.Framework 2.0
    開発言語 VB
    ASP.NET 2.0
    2009年3月27日 1:48

回答

  • こんばんは!(^^)!ふ~です。

    >今回、DetailsViewにて、テンプレート編集を行い、templateにlabelを追加して作成しています。
    >このようなlabelの付近に戻るように定義したいのですが、よい方法を教えてください。

    ポイントは、<asp:label id="L1" runat="Server"></asp:label>は外側になければ上手く行きません。
    また、スクロール出来るように、表示位置の前後に余裕が必要です。

    <ファイル名 Default.aspx>
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebDetailsViewTest._Default" %>
    
    <!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>
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
    
            <asp:label id="L1" runat="Server"></asp:label>
    
            <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" 
                AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1">
    
                <FooterTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Button" />
                </FooterTemplate>
    
                <Fields>
                    <asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" 
                        SortExpression="ProductID" />
                    <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
                        SortExpression="ProductName" />
                    <asp:BoundField DataField="SupplierID" HeaderText="SupplierID" 
                        SortExpression="SupplierID" />
                    <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
                        SortExpression="CategoryID" />
                    <asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" 
                        SortExpression="QuantityPerUnit" />
                    <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
                        SortExpression="UnitPrice" />
                    <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" 
                        SortExpression="UnitsInStock" />
                    <asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" 
                        SortExpression="UnitsOnOrder" />
                    <asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" 
                        SortExpression="ReorderLevel" />
                    <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" 
                        SortExpression="Discontinued" />
                    <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
                        SortExpression="CategoryName" />
                </Fields>
            </asp:DetailsView>
            
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:northwndConnectionString %>" 
                SelectCommand="SELECT * FROM [Alphabetical list of products]">
            </asp:SqlDataSource>
            
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            </div>
        </form>
    </body>
    </html>
    

    ◆ラベルの定義位置はDetailsViewの上で十分です。
            <asp:label id="L1" runat="Server"></asp:label>

            <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
                AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1">


    ◆使用したデーターベースはマイクロソフトのサンプル「northWind.mdf」です。

    ◆テストコマンド
    1) http://localhost:2843/Default.aspx
    2)http://localhost:2843/Default.aspx#L1

    DetailsViewの表が適当な位置に表示されることが確認できると思います。これは、こんな使い方です。
    • 回答としてマーク tanuyoshi 2009年4月20日 2:30
    2009年3月31日 11:25

すべての返信

  •  B画面を別ウィンドウ表示にでもしない限り、A画面に戻るではなく動き的にはB画面から(新たに)A画面に遷移するになると思います。
    もし、そのときにB画面に遷移する前のA画面での選択ボタンを知りたいのであればSession変数などになんらかの情報を保存しておいてそれを取り出して使うことになります。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39032&forum=7

    http://blogs.wankuma.com/hatsune/
    2009年3月27日 2:12
  • 早速の回答有難うごいざいます。

    >B画面に遷移する前のA画面での選択ボタンを知りたいのであればSession変数などになんらかの情報を保存しておいてそれを取り出して使うことになります。

    指摘の通り、Session変数を使用して対応することにします。


    テストと行い、確認してみます。
    2009年3月27日 3:03
  •  こんにちは!(^^)!ふ~です。

    私は、時々、表示したい位置にラベルを付けて、その位置に飛んで行くことをしています。

    <!-- Default.aspxの任意の場所にラベルを設けます。--> 
    <asp:label id="L1" runat="Server"></asp:label> 
     
    <!-- Default.aspx#L1へ --> 
    <asp:Button ID="Button1" runat="server" Text="予約確認ボタン" OnClick=Button1_Click ValidationGroup=Reservation postbackurl="Default.aspx#L1" /> 
     

    L1と言うラベル付け、http://xxxxxxxxxx/Default.aspx#L1でページを表示しますとそのL1ラベル近辺を表示する。(HTML言語と全く同じです。)

    以上
    2009年3月27日 5:30
  • 回答有難うございます。

    指示通り試して、見ました。

    戻りの方法を以下のようにしました。

    Response.Redirect("Default.aspx#L1")

    先頭行に戻っているようになります。

    戻る画面は、テンプレート編集で、templateにlabelを追加して作成しています。
        
    指定方法に間違いがあるのでしょうか?

    教えてください。

    よろしくお願いします。

    以上

    2009年3月30日 5:23
  • こんにちは!(^^)!ふ~です。

    ◆ラベル動作の確認

    1)WebForm1.aspxの任意の位置に下記行を埋め込みます。
    <HTML>
    <HEAD>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">

      <asp:label id="L1" runat="Server"></asp:label>

    </form>
    </body>
    </HTML>

    2)ラベルの位置から表示されることを確認します。
    http://localhost/xxxxxxxx/WebForm1.aspx#L1

    取りあえずこの動作が出来ることをご確認してみて下さい。

    2009年3月30日 6:48
  • 回答有難うございます。

    指摘の通り、確認テストできました。

    ラベルをテンプレートで、作成せず、ラベル指定をしたラベルの場合は、戻り位置が、そのラベル付近になりました。

    今回、DetailsViewにて、テンプレート編集を行い、templateにlabelを追加して作成しています。

    このようなlabelの付近に戻るように定義したいのですが、よい方法を教えてください。

    2009年3月31日 7:40
  • こんばんは!(^^)!ふ~です。

    >今回、DetailsViewにて、テンプレート編集を行い、templateにlabelを追加して作成しています。
    >このようなlabelの付近に戻るように定義したいのですが、よい方法を教えてください。

    ポイントは、<asp:label id="L1" runat="Server"></asp:label>は外側になければ上手く行きません。
    また、スクロール出来るように、表示位置の前後に余裕が必要です。

    <ファイル名 Default.aspx>
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebDetailsViewTest._Default" %>
    
    <!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>
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
    
            <asp:label id="L1" runat="Server"></asp:label>
    
            <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" 
                AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1">
    
                <FooterTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Button" />
                </FooterTemplate>
    
                <Fields>
                    <asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" 
                        SortExpression="ProductID" />
                    <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
                        SortExpression="ProductName" />
                    <asp:BoundField DataField="SupplierID" HeaderText="SupplierID" 
                        SortExpression="SupplierID" />
                    <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
                        SortExpression="CategoryID" />
                    <asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" 
                        SortExpression="QuantityPerUnit" />
                    <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
                        SortExpression="UnitPrice" />
                    <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" 
                        SortExpression="UnitsInStock" />
                    <asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" 
                        SortExpression="UnitsOnOrder" />
                    <asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" 
                        SortExpression="ReorderLevel" />
                    <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" 
                        SortExpression="Discontinued" />
                    <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
                        SortExpression="CategoryName" />
                </Fields>
            </asp:DetailsView>
            
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:northwndConnectionString %>" 
                SelectCommand="SELECT * FROM [Alphabetical list of products]">
            </asp:SqlDataSource>
            
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            </div>
        </form>
    </body>
    </html>
    

    ◆ラベルの定義位置はDetailsViewの上で十分です。
            <asp:label id="L1" runat="Server"></asp:label>

            <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
                AutoGenerateRows="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1">


    ◆使用したデーターベースはマイクロソフトのサンプル「northWind.mdf」です。

    ◆テストコマンド
    1) http://localhost:2843/Default.aspx
    2)http://localhost:2843/Default.aspx#L1

    DetailsViewの表が適当な位置に表示されることが確認できると思います。これは、こんな使い方です。
    • 回答としてマーク tanuyoshi 2009年4月20日 2:30
    2009年3月31日 11:25
  • 回答有難うございます。

    指定された内容を確認して、みます。

    よろしくお願いします。
    2009年4月1日 8:59
  • DetailsView1の外のlabelの位置に、戻って表示されることを確認しました。

    DetailsView1のレイアウトが、縦長のため、先頭位置と、最終位置に、labelを作成し、表示するテストをしました。
    DetailsView1のレイアウトの中間の地点に、画面を戻すは、不可能でしょうか?

    よろしくお願いします。

    2009年4月6日 7:44
  • DetailsView1の外のlabelの位置に、戻って表示されることを確認しました。

    DetailsView1のレイアウトが、縦長のため、先頭位置と、最終位置に、labelを作成し、表示するテストをしました。
    DetailsView1のレイアウトの中間の地点に、画面を戻すは、不可能でしょうか?

    よろしくお願いします。

    DetailsView1のレイアウトの中間の地点に、戻すことは、できないようでしたので、先頭と最後の行のどちらかに戻る仕様にして対応しました。

    回答有難うございました。


    2009年4月20日 2:29