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

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

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

Re[10]: TabContainer内コントロールへの初期


(過去ログ 121 を表示中)

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

■72297 / inTopicNo.1)  TabContainer内コントロールへの初期フォーカス
  
□投稿者/ ふも (1回)-(2014/06/02(Mon) 20:38:32)

分類:[ASP.NET (C#)] 

いつもお世話になっています。

AJAX ToolkitのTabContainer内に配置されているコントロール(TextBox)に初期フォーカスをセットしようとしているのですが、
タブにフォーカスがセットされてしまって、タブ内のコントロールにフォーカスをセットすることができません。

PageLoadイベントで、TextBox.Focus();を実行するだけではうまく動かないものなのでしょうか。

知っている方がいらっしゃったらご教示お願いします。
引用返信 編集キー/
■72299 / inTopicNo.2)  Re[1]: TabContainer内コントロールへの初期フォーカス
□投稿者/ WebSurfer (273回)-(2014/06/02(Mon) 22:22:51)
No72297 (ふも さん) に返信
> いつもお世話になっています。
>
> AJAX ToolkitのTabContainer内に配置されているコントロール(TextBox)に初期フォーカスをセットしようとしているのですが、
> タブにフォーカスがセットされてしまって、タブ内のコントロールにフォーカスをセットすることができません。
>
> PageLoadイベントで、TextBox.Focus();を実行するだけではうまく動かないものなのでしょうか。
>
> 知っている方がいらっしゃったらご教示お願いします。

どうやっているんですか? 例えば、Ajax Control Toolkit のサンプルで signatureText.Focus(); とすれば
それにフォーカスが当たるはずですが?
引用返信 編集キー/
■72302 / inTopicNo.3)  Re[2]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (2回)-(2014/06/03(Tue) 09:10:49)
No72299 (WebSurfer さん) に返信
> どうやっているんですか? 例えば、Ajax Control Toolkit のサンプルで signatureText.Focus(); とすれば
> それにフォーカスが当たるはずですが?

返信ありがとうございます。

まず、今のお話を聞いてサンプルを再確認してみましたが、Focusをセットしているような記述がまず見つけられませんでした。

やり方としては、

<Tabcontainer>
<TabPanel>
<Panel>
<TextBox>〜</TextBox>
</Panel>
</TabPanel>
</Tabcontainer>

といった配置になっていて、

そのPage_Loadイベント時に
TextBox.Focus();
を実行しています。
引用返信 編集キー/
■72303 / inTopicNo.4)  Re[3]: TabContainer内コントロールへの初期フォーカス
□投稿者/ nobb (29回)-(2014/06/03(Tue) 09:47:30)
2014/06/03(Tue) 09:49:48 編集(投稿者)

No72302 (ふも さん) に返信
ASP.NETには明るくないので外しているかもしれませんが、
TextBoxにidを振ってそれをプログラム側から利用したと記憶してます。

<TextBox id="hogeTextBox"></TextBox>
とし、C#側では
hogeTextBox.Focus();
だったような・・・
引用返信 編集キー/
■72304 / inTopicNo.5)  Re[4]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (3回)-(2014/06/03(Tue) 10:00:19)
No72303 (nobb さん) に返信
> 2014/06/03(Tue) 09:49:48 編集(投稿者)
>
> ■No72302 (ふも さん) に返信
> ASP.NETには明るくないので外しているかもしれませんが、
> TextBoxにidを振ってそれをプログラム側から利用したと記憶してます。
>
> <TextBox id="hogeTextBox"></TextBox>
> とし、C#側では
> hogeTextBox.Focus();
> だったような・・・

返信ありがとうございます。

すみません、上の記述では省いていましたが、IDを振って、プログラム側からの利用はやっています。
ちょうどnobbさんが記述している内容と同じような感じです。

記述を省きすぎてしまいました。申し訳ないです。



引用返信 編集キー/
■72307 / inTopicNo.6)  Re[3]: TabContainer内コントロールへの初期フォーカス
□投稿者/ WebSurfer (275回)-(2014/06/03(Tue) 10:58:10)
No72302 (ふも さん) に返信
> ■No72299 (WebSurfer さん) に返信
>>どうやっているんですか? 例えば、Ajax Control Toolkit のサンプルで signatureText.Focus(); とすれば
>>それにフォーカスが当たるはずですが?
>
> 返信ありがとうございます。
>
> まず、今のお話を聞いてサンプルを再確認してみましたが、Focusをセットしているような記述がまず見つけられませんでした。

自分で Page_Load に signatureText.Focus(); と追記するのです。その結果を見てください。

ところで、Ajax Control Toolkit のサンプルは持っていますよね? それが Visual Studio で開いて
動かせるようになってますか? 掲示板で話しをするばあいは、そういう共通のものをベースにしない
と話が通じないですよ。
引用返信 編集キー/
■72311 / inTopicNo.7)  Re[5]: TabContainer内コントロールへの初期フォーカス
□投稿者/ WebSurfer (277回)-(2014/06/03(Tue) 15:57:11)
No72304 (ふも さん) に返信

誤解があるといけないので追加情報を書きます。

先のレスで「Ajax Control Toolkit のサンプル」と言ったのは以下のページのことです。

http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/Tabs/Tabs.aspx

signatureText というのは、そのページを最初に開いた時に、一番上に表示されている
TextBox の ID です。

Ajax Control Toolkit をダウンロードすると、その中に AjaxControlToolkitSampleSite.zip
というファイルが同梱されていて、それを解凍すればサンプルの完全なコードが展開されます。

それを Visual Studio で開いて見てください。

引用返信 編集キー/
■72319 / inTopicNo.8)  Re[6]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (4回)-(2014/06/03(Tue) 20:24:35)
No72311 (WebSurfer さん) に返信
> ■No72304 (ふも さん) に返信
>
> 誤解があるといけないので追加情報を書きます。
>
> 先のレスで「Ajax Control Toolkit のサンプル」と言ったのは以下のページのことです。
>
> http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/Tabs/Tabs.aspx
>
> signatureText というのは、そのページを最初に開いた時に、一番上に表示されている
> TextBox の ID です。
>
> Ajax Control Toolkit をダウンロードすると、その中に AjaxControlToolkitSampleSite.zip
> というファイルが同梱されていて、それを解凍すればサンプルの完全なコードが展開されます。
>
> それを Visual Studio で開いて見てください。

遅くなりまして申し訳ないです。

サンプル自体は同じものを見ていると思います。

ですがすみません、現在自分の環境でサンプルがうまく動かせない状態です。(URLの先のサンプルサイトはうまく見れました。)

Visual Studioで見ようとしたときに、解凍したフォルダにはSlnもprjのファイルもないので、空のWebアプリケーションを作成、
解凍したフォルダをプロジェクトに取り込んで表示しようとしていました。

ですが、取り込んだ後にいくつかエラーを消していくと、最初から記述されているコードでエラーが発生してしまいます。

1.名前'CurrentTab'は現在のコンテキスト内に存在しません。
2.名前'Tabs'は現在のコンテキスト内に存在しません。

自分の投稿したエラー解決以前の問題で申し訳ないですが、対応方法分かりましたらご教示ください。


引用返信 編集キー/
■72320 / inTopicNo.9)  Re[7]: TabContainer内コントロールへの初期フォーカス
□投稿者/ WebSurfer (280回)-(2014/06/03(Tue) 21:15:01)
No72319 (ふも さん) に返信

Web サイトプロジェクトと Web アプリケーションプロジェクトの違いが分かりますでしょうか?

Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト
http://msdn.microsoft.com/ja-jp/library/dd547590.aspx

サンプルは Web サイトプロジェクトで作られています。

AjaxControlToolkitSampleSite.zip を適当なフォルダ内に解凍したら、Visual Studio 2010 なら
(VS2012/2013 は分かりません)、[ファイル(F)] ⇒ [Web サイトを開く(E)] で表示されるダイ
アログで [ファイルシステム] クリックし、そのフォルダを選択して [開く] をクリックすれば
表示されるはずです。
引用返信 編集キー/
■72322 / inTopicNo.10)  Re[8]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (5回)-(2014/06/04(Wed) 08:37:45)
No72320 (WebSurfer さん) に返信
> ■No72319 (ふも さん) に返信
>
> Web サイトプロジェクトと Web アプリケーションプロジェクトの違いが分かりますでしょうか?
>
> Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト
> http://msdn.microsoft.com/ja-jp/library/dd547590.aspx
>
> サンプルは Web サイトプロジェクトで作られています。
>
> AjaxControlToolkitSampleSite.zip を適当なフォルダ内に解凍したら、Visual Studio 2010 なら
> (VS2012/2013 は分かりません)、[ファイル(F)] ⇒ [Web サイトを開く(E)] で表示されるダイ
> アログで [ファイルシステム] クリックし、そのフォルダを選択して [開く] をクリックすれば
> 表示されるはずです。

返信ありがとうございます。

すみません、確認しました。Webサイトプロジェクトを使ったことがなかったので、
Webアプリケーションで開くと思い込んでしまっていました。

動作の方も確認できました。申し訳ないです、TabContainerは関係ないようですね。
自分の現在のプロジェクトの原因は何なのか再度確認してみようと思います。
引用返信 編集キー/
■72336 / inTopicNo.11)  Re[4]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (6回)-(2014/06/04(Wed) 21:03:27)
AJAXControlToolkitのサンプルで確認したところ、TabContainerのプロパティのうち、「OnDemand」をTrueのTabContainerが存在しない場合、初期フォーカスがセットされないようです。
(サンプルでは、ID=TabContainer1のOnDemandがTrueになっています。)

下に記載されているプロパティの説明を見ても、これがどのように影響してフォーカスがセットされないのかが分かりません。

なぜこのような動作をするのか、わかる方がいらっしゃったらご教示ください。
引用返信 編集キー/
■72338 / inTopicNo.12)  Re[5]: TabContainer内コントロールへの初期フォーカス
□投稿者/ 渋木宏明 (15回)-(2014/06/04(Wed) 21:13:17)
渋木宏明 さんの Web サイト
> これがどのように影響してフォーカスがセットされないのかが分かりません。

完全にプロパティ名かrなお想像なので間違ってるかもしれませんが、TabContainer.OnDemmand = true ということは、タブ内のレンダリングが必要に応じて実行される(=タブの選択状態が変化するなどして表示状態になった時、初めてタブ内部のレンダリングが行わる)とかじゃないでしょーか?

つまり、Page_Load のタイミングではまだタブが実体化されていない(非表示?)ため、フォーカスを設定しようがない、とか。
引用返信 編集キー/
■72351 / inTopicNo.13)  Re[5]: TabContainer内コントロールへの初期フォーカス
□投稿者/ WebSurfer (282回)-(2014/06/05(Thu) 11:31:04)
No72336 (ふも さん) に返信
> AJAXControlToolkitのサンプルで確認したところ、TabContainerのプロパティのうち、「OnDemand」をTrueのTabContainerが存在しない場合、初期フォーカスがセットされないようです。

それは初期画面では後ろに隠れていて表示されてない TabPanel(サンプルで言うと、例えば一番上の
TabConatiner の中の Email タブ)内のテキストボックスのことを言ってますよね? 表示されてない
のでフォーカスを当てようがないです。

TabContainer の onDemand プロパティを true にすると(デフォルトでは false)、後ろに隠れてい
る TabPanel が表示される度に、Ajax を利用して、その TabPanel の内容をサーバーから取得して表
示します。(TabPanel の OnDemandMode プロパティがデフォルトの Always の場合です。Once, None
の場合は動作が異なります。サンプルの一番下にある「OnDemand feature:」を操作してみると分かる
はず)

TabContainer の onDemand プロパティが false(デフォルト)の場合は、初期画面で一度に取得した
TabPanel を切り替えて表示します。なので、初期画面でフォーカスが当たっていても、タブを切り替
えて再表示するとフォーカスは外れます。

以上のような訳で、 TabContainer の onDemand プロパティを true にして、目的のテキストボックス
に Page_Load でフォーカスを当てれば、タブを再表示するたび Ajax を使って書き変わるので、フォー
カスも当たるということです。

引用返信 編集キー/
■72360 / inTopicNo.14)  Re[6]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (7回)-(2014/06/05(Thu) 14:51:33)
No72338 (渋木宏明 さん) に返信
>>これがどのように影響してフォーカスがセットされないのかが分かりません。
>
> 完全にプロパティ名かrなお想像なので間違ってるかもしれませんが、TabContainer.OnDemmand = true ということは、タブ内のレンダリングが必要に応じて実行される(=タブの選択状態が変化するなどして表示状態になった時、初めてタブ内部のレンダリングが行わる)とかじゃないでしょーか?
>
> つまり、Page_Load のタイミングではまだタブが実体化されていない(非表示?)ため、フォーカスを設定しようがない、とか。

返信ありがとうございます。

なるほど。WebSurferさんの意見と合わせて参考になります。
引用返信 編集キー/
■72361 / inTopicNo.15)  Re[6]: TabContainer内コントロールへの初期
□投稿者/ ふも (8回)-(2014/06/05(Thu) 15:04:16)
2014/06/05(Thu) 15:13:15 編集(投稿者)

No72351 (WebSurfer さん) に返信
> ■No72336 (ふも さん) に返信
>>AJAXControlToolkitのサンプルで確認したところ、TabContainerのプロパティのうち、「OnDemand」をTrueのTabContainerが存在しない場合、初期フォーカスがセットされないようです。
>
> それは初期画面では後ろに隠れていて表示されてない TabPanel(サンプルで言うと、例えば一番上の
> TabConatiner の中の Email タブ)内のテキストボックスのことを言ってますよね? 表示されてない
> のでフォーカスを当てようがないです。
>
> TabContainer の onDemand プロパティを true にすると(デフォルトでは false)、後ろに隠れてい
> る TabPanel が表示される度に、Ajax を利用して、その TabPanel の内容をサーバーから取得して表
> 示します。(TabPanel の OnDemandMode プロパティがデフォルトの Always の場合です。Once, None
> の場合は動作が異なります。サンプルの一番下にある「OnDemand feature:」を操作してみると分かる
> はず)
>
> TabContainer の onDemand プロパティが false(デフォルト)の場合は、初期画面で一度に取得した
> TabPanel を切り替えて表示します。なので、初期画面でフォーカスが当たっていても、タブを切り替
> えて再表示するとフォーカスは外れます。
>
> 以上のような訳で、 TabContainer の onDemand プロパティを true にして、目的のテキストボックス
> に Page_Load でフォーカスを当てれば、タブを再表示するたび Ajax を使って書き変わるので、フォー
> カスも当たるということです。
>

返信ありがとうございます。

なるほど、説明されて納得できました。ありがとうございます。

今の話を受けて、まず動作検証用に、まっさらなWebappricationのプロジェクトを作成して試してみたのですが、
そこだとなぜかフォーカスセットがうまく動きません。
具体的には、画面初期表示時にはフォーカスがセットない状態です。
必要最低限の動作は実装できていると考えているのですが、どうも原因がつかめません。

次のソースと合わせて、原因がわかる方がいらっしゃいましたら、ご教示お願いします。
引用返信 編集キー/
■72362 / inTopicNo.16)  Re[7]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (9回)-(2014/06/05(Thu) 15:07:33)
<!-- WebForm1.aspx -->
<!-- プロジェクト名、フォーム名には特に深い意味はありません。-->
<!-- 初期表示時、TabContainer1.TabPanel1.TextBox1にフォーカスを当てたい。-->
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication5.WebForm1" %>

<!DOCTYPE html>

<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">
    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>
        <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0" OnDemand="True" Width="305px" >
            <ajaxToolkit:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1" OnDemandMode="Always"><ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ContentTemplate>
</ajaxToolkit:TabPanel>
        </ajaxToolkit:TabContainer>
    
    </div>
    </form>
</body>
</html>

引用返信 編集キー/
■72363 / inTopicNo.17)  Re[8]: TabContainer内コントロールへの初期
□投稿者/ ふも (10回)-(2014/06/05(Thu) 15:09:47)
2014/06/05(Thu) 15:11:50 編集(投稿者)

投稿モードミスにつき削除
引用返信 編集キー/
■72364 / inTopicNo.18)  Re[9]: TabContainer内コントロールへの初期フォーカス
□投稿者/ ふも (11回)-(2014/06/05(Thu) 15:10:43)
// WebForm1.aspx.cs
// PageLoadで、PostBackでない場合に、TabPanel1.TextBox1にフォーカスを当てたい。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication5
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TabContainer1.ActiveTab = TabPanel1;
                TextBox1.Focus();
            }
        }
    }
}

引用返信 編集キー/
■72370 / inTopicNo.19)  Re[7]: TabContainer内コントロールへの初期
□投稿者/ WebSurfer (283回)-(2014/06/05(Thu) 18:09:24)
No72361 (ふも さん) に返信
> 今の話を受けて、まず動作検証用に、まっさらなWebappricationのプロジェクトを作成して試してみたのですが、
> そこだとなぜかフォーカスセットがうまく動きません。
> 具体的には、画面初期表示時にはフォーカスがセットない状態です。

Ajax Control Toolkit のバージョンはなんですか? 最新版 Version 7.1213 を使ってま
すか?

理由は不明ですが、古いバージョンでは Page_Load で TextBox.Forcus(); してもフォーカス
は当たらなくて、JavaScript で対応せざるを得ないことがあるようです。
引用返信 編集キー/
■72372 / inTopicNo.20)  Re[8]: TabContainer内コントロールへの初期
 
□投稿者/ ふも (12回)-(2014/06/05(Thu) 19:51:02)
No72370 (WebSurfer さん) に返信
> ■No72361 (ふも さん) に返信
>>今の話を受けて、まず動作検証用に、まっさらなWebappricationのプロジェクトを作成して試してみたのですが、
>>そこだとなぜかフォーカスセットがうまく動きません。
>>具体的には、画面初期表示時にはフォーカスがセットない状態です。
>
> Ajax Control Toolkit のバージョンはなんですか? 最新版 Version 7.1213 を使ってま
> すか?
>
> 理由は不明ですが、古いバージョンでは Page_Load で TextBox.Forcus(); してもフォーカス
> は当たらなくて、JavaScript で対応せざるを得ないことがあるようです。


バージョンを確認したところ、Version7.0123を使用していたので、最新バージョンで動作確認したところ、フォーカスが正常にセットされました。

まずは、バージョンが古かったことが一因だったようです。情報ありがとうございました。

ですが、実際作成中のプロジェクトのToolkitのバージョンをあげてもうまく動作しないので、そこについてはまた調査ののち、追加質問させていただこうと思います。




引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -