目次

ニュース

日記カテゴリ

書庫

わんくま同盟大阪勉強会#8に参加してきました。これからOSがWindows VISTAへ移行していくうえで押さえておくべき必須の機能を、 刈歩 菜良さん、 えムナウさん、 はなおか じったさん、中博俊さんが話すとなれば、そら参加人数51人と大阪では過去最高にもなるわけです。パチパチパチ。

さらに大阪では初?の懇親会2次会が執り行われ、その場でASP.NET AJAXのOnTextChangedイベントでうんぬん。。。と話を持ち出して、中さんから「そのイベントはないやろ!」突っ込みを受け、えムナウさんからご指導をいただき、その場では私の勘違いだと受け入れたんですが、帰りしにやっぱりASP.NET AJAXでOnTextChangedイベント拾って処理してたよなぁと気になったので、それを優先して書いてしまいますw

従来WebアプリでAJAXを用いてテキストボックスの内容変更を拾って処理を行うには、(その処理方法の良し悪しは置いておいて・・・)クライアント側のJavascriptでonchangeやonblurイベントを用いていました。
 それをASP.NET AJAXで素直に実現しようとするならば、UpdatePabelで囲ったテキストボックスの「AutoPostBack」を有効にし、OnTextChangedイベントを用いるのが、一番手間がかからないかなぁ~それってありですかねぇ?と聞きたかったのでした。
 この方式でたとえば入力チェックを行うと、サーバ側の処理でクライアント側でAJAXが有効なのかどうか、深く考えなくてよくなったりします。それを踏まえて複数テキストがある場合をざっくり書くと下のようになります。

protected void TextBox1_OnTextChanged(object sender, EventArgs e)
{
    // TextBox1の入力チェック用メソッド
}
protected void TextBox2_OnTextChanged(object sender, EventArgs e)
{
    // TextBox2の入力チェック用メソッド
}
protected void TextBox3_OnTextChanged(object sender, EventArgs e)
{
    // TextBox3の入力チェック用メソッド
}
protected void Submit_Click(object sender, EventArgs e)
{
    // TextBox1の入力チェック用メソッド
    // TextBox2の入力チェック用メソッド
    // TextBox3の入力チェック用メソッド
    // で、全部のチェック結果を元に処理実行
}

こうしてるとチェック処理を1箇所で扱えてうれしいなぁと。それにAJAXでのチェックをやめようとした場合にもまあ被害は少ないし幸せですよと。

さあどうだ!

投稿日時 : 2007年4月29日 1:18
Feedback
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    かるあ
    Posted @ 2007/04/29 1:51
    手間はかからないかもしれませんが、リクエスト数を考えるとサーバーが死ねそうですね(汗
    某赤間先生セッションでもやっていましたが、部分更新時でもすべてのポストデータを送るし、戻ってくるViewStateも大変なことになります。

    Change系のイベント変な動作をするのをカバーしきれないので使わないほうが吉
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    ひろえむ
    Posted @ 2007/04/29 8:03
    既にかるあさんも書いていますが、書ける書けないでいうと書けるでしょうが、ありかなしかといわれるとないですなw

    こういった用途はAJAXでやるにはちょっとキツい内容のような気がしますねー(^^;

    ViewStateもしかり、UpdatePanelに入っていない部分もしかりといろいろとトラブルがありそうですねー。

    こういった使い方は非常に気をつけないとヤバイのでこういう使い方はしないのが吉ですね(^^;
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    えムナウ
    Posted @ 2007/04/30 1:14
    昨日話したのは概略以下のことです。
    1)サーバー負荷
    WindowsFormsのTextChangedみたいに一文字ごとにイベントが入ると勘違いしていたので・・・
    ただ1TextBox入力毎でもAJAXを使ってサーバーと通信するのはサーバー負荷を考えてありえない。
    2)AJAXではValidationControlは使えない。
    3)AJAX使うときはクライアント側でJavaScriptでチェックするしかないんじゃないの???
    当然サーバーでも最終チェックするのは必要としてもね。
    (直接投げられたときの対応も必要です)
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    中博俊
    Posted @ 2007/04/30 16:44
    だもんでコントロールごとに粒粒のWebサービスを呼び出す形式にするんだぁ!!ってこと。
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    koka
    Posted @ 2007/05/01 8:21
    かるあさん、ひろえむさん、えムナウさん、中さんコメントありがとうございますm(_ _)m
    ちとまとめてみますと。。。

    >ただ1TextBox入力毎でもAJAXを使ってサーバーと通信するのはサーバー負荷を考えてありえない。
    っていうのは
    >某赤間先生セッションでもやっていましたが、部分更新時でもすべてのポストデータを送るし、戻ってくるViewStateも大変なことになります。
    だから
    >こういった用途はAJAXでやるにはちょっとキツい内容のような気がしますねー(^^;
    なわけですよね。
    そこまでは納得。そして「じゃあ利用頻度が低い画面ならいいんでない?」とも思いました。

    ただ
    >だもんでコントロールごとに粒粒のWebサービスを呼び出す形式にするんだぁ!!ってこと。
    ってのはどうなのでしょう・・・Webサービスを呼び出すのに、べたなAJAXで行うのと、Updateパネルを利用するのでは確かにデータ量に差があるとは思います。けれどもそれだけならばWebサーバのへのアクセス頻度は変わらないわけで、えムナウさんの指摘では、やっぱり駄目なんじゃないかと思います。。。
    入力チェックの中でも、例えば重複チェックなどサーバでしか行えないものがある場合に使えるんじゃないかと思っているのですが、そこだけピンポイントでWebサービスを作成してそれをクライアント側のJavascriptから利用するのが、ベターなのですかね。
    それだとやっぱりJavascriptから逃れることはできないのねorz
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    中博俊
    Posted @ 2007/05/01 23:24
    AJAXはJSをおいしく食べる技術なので、よりコアなJSを書くのだけ回避するものだと思いますよ。
    頻度はあえて私は意識しなくていいと思います。
    Webサービスもキャッシングできるでしょ。
    もちろんいろいろやりようはあるし、おいらのセッションでもとりあえずはすべてUpdatePanel化しましょう。っていったけどね。(^^
  • # re: わんくま同盟大阪勉強会#8の2次会で。
    えムナウ
    Posted @ 2007/05/03 18:18
    >AJAXではValidationControlは使えない。
    こういう試みもあるようです。
    http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
タイトル  
名前  
Url
コメント   

Blog 利用状況

絡んでるところ