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

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

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

Re[7]: FormView二回ポストバック後に、TextBox入力不可


(過去ログ 85 を表示中)

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

■50441 / inTopicNo.1)  FormView二回ポストバック後に、TextBox入力不可
  
□投稿者/ たかだ (1回)-(2010/06/07(Mon) 16:35:54)

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

FormViewに複数のTextBoxがあります。

TextBox1、TextBox2と文字を入力します。TextBox2のフォーカスを外した時
フォーカスがTextBox3に移動する(見かけ上は)のですが、そのまま何故かどこのテキストボックスも入力できない状態になります。 DropDownListだけは変更できます。 これを変更した後はテキストボックスも入力できる状態に戻ります。

TextBox2_TextChangedは実行されるので、PostBackはされてるのですが
その後の動きがおかしいのです。

以下の最小構成でも、再現性があります。
DataKeyNamesの設定を外してやると、この現象は起こりません。

実際はDataSourceでDBと繋げて、キーとなるDataKeyNamesを設定してるのですが
やはり同様です。

<asp:FormView ID="FormView1" runat="server" DataKeyNames="a">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" ontextchanged="TextBox2_TextChanged"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True">
<asp:ListItem Value="1"></asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:FormView>

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
}
else
{
FormView1.DefaultMode = FormViewMode.Insert;
}
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{

}

根本的にDataKeyNamesの設定と、TextBoxの入力不可にどう関係があるのでしょうか?

DataKeyNamesは更新キーとして使っているので設定する必要があるのですが
設定するとこの不可解な現象となります。

同じような現象の方はいないでしょうか?
よろしくお願します。
引用返信 編集キー/
■50459 / inTopicNo.2)  Re[1]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ もりお (231回)-(2010/06/08(Tue) 09:10:49)
No50441 (たかだ さん) に返信

Firefox 3.6.3 と Opera 10.53 で確認してみましたが再現しませんでした。
現象を確認された環境をより詳しくお教えいただけないでしょうか。
ブラウザは何を利用していらっしゃるのでしょうか。
TextBox1、TextBox2 に文字を入力する際のフォーカス移動はマウスで行うので
しょうか。
UpdatePanel など他のコントロールは不使用でしょうか。

引用返信 編集キー/
■50470 / inTopicNo.3)  Re[2]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ マサヤ (1回)-(2010/06/08(Tue) 13:39:34)
No50441 (たかだ さん) に返信
IE8で試して見ましてが、もりおさんと同じく再現できませんでした。
再現できるブラウザを教えてください。

  また、
>>TextBox1、TextBox2と文字を入力します。TextBox2のフォーカスを外した時
>>フォーカスがTextBox3に移動する(見かけ上は)
とありますが、TextBox1とTextBox2のAutoPostBackがtrueとなっており、
 TabIndexも設定されていない状態で見かけ上でもフォーカスがTextBox3に移動することはないと思います。
 

引用返信 編集キー/
■50505 / inTopicNo.4)  Re[3]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ たかだ (2回)-(2010/06/09(Wed) 10:51:10)
返事ありがとうございます。

どうやらUpdatePanelを使っている時にでる症状でした。
最初に提示したソースにScriptManagerを追加しFormViewをUpdatePanel内に
設置すれば再現します。

値を入力後の移動はTabキーです。

テストはIE8で行っております。

最初に提示したソースにScriptManagerとUpdatePanelを追加
した以外にソースは無いので最小構成でテストしています。

よろしくお願いします。




引用返信 編集キー/
■50522 / inTopicNo.5)  Re[4]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ もりお (232回)-(2010/06/10(Thu) 05:43:18)
2010/06/10(Thu) 05:49:04 編集(投稿者)
No50505 (たかだ さん) に返信

> テストはIE8で行っております。

IE8 にて再現しました。
UpdatePanel 内に TextBox コントロールを3つ配置した場合も、ご掲示いただいた手順で
キー入力を受け付けなくなる現象が起きました。FormView コントロールは現象とは関係な
いみたいです。

ScriptManager の EnablePartialRendering プロパティに false をセットして
部分レンダリングを無効にすると起きないようです。

部分レンダリングが有効な場合に行われる非同期ポストバックの
pageLoading、pageLoaded、endRequest いずれかのイベントのハンドラにて、適当な
場所に focus をセットすることで現象を回避することはできるようです。

<script type="text/javascript">
  onload = initialize;
  
  function initialize()
  {
    var pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
    pageRequestManager.add_pageLoading(pageLoadingHandler);
  }
  
  function pageLoadingHandler(sender, args)
  {
    document.body.focus();
  }
</script>

おそらくは部分レンダリングがキー入力を受け付けなくなる現象の原因であろうとは思うので
すが、困ったことに、要因と言いますか、なにゆえにこのような動作になるのかわかりません。
私も知りたいです。

引用返信 編集キー/
■50643 / inTopicNo.6)  Re[5]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ たかだ (1回)-(2010/06/14(Mon) 08:34:38)
>
> IE8 にて再現しました。
> UpdatePanel 内に TextBox コントロールを3つ配置した場合も、ご掲示いただいた手順で
> キー入力を受け付けなくなる現象が起きました。FormView コントロールは現象とは関係な
> いみたいです。
>

試して頂いてありがとうございます。

再現してしまいましたか、ということは私のPCだけがおかしいと
いうにでは無いのですね。

しかし、不思議なのは、ただUpdatePanelにTextBox置くてTab移動というのは
ものすごく一般的な、基本的な話だと思うのですが、他のみなさんは
同じ症状にならないのですかね?

それとも、UpdatePanelってのは全然活用されてない?


引用返信 編集キー/
■50648 / inTopicNo.7)  Re[6]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ みきぬ (921回)-(2010/06/14(Mon) 11:34:44)
No50643 (たかだ さん) に返信
> しかし、不思議なのは、ただUpdatePanelにTextBox置くてTab移動というのは
> ものすごく一般的な、基本的な話だと思うのですが、他のみなさんは
> 同じ症状にならないのですかね?
>
AutoPostBack も含めると「ものすごく一般的」とまでは言えないと思いますが。
引用返信 編集キー/
■50649 / inTopicNo.8)  Re[7]: FormView二回ポストバック後に、TextBox入力不可
□投稿者/ マサヤ (17回)-(2010/06/14(Mon) 11:45:37)
以前、Ajax開発でUpdatePanelにReorderListをのせたらバグってました。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -