- PR -

フレームページのDropDownListの動きがおかしい

投稿者投稿内容
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-03-31 13:07
引用:
現象発生の手順は下記のようです。

AutoPostBackをtrueにしないと現象が確認できないのですがtrueなのですか?

PostBackした際に、サーバが送出した値(ここでは2)と変わっていなければ
SelectedIndexChangedイベントは発生しません。回避方法は時と場合によっていろいろ
ですが思いつくのを2つ。

1、SelectedIndexChangedではなくPage_LoadでIsPostBackがtrueのときに
Response.Redirectする

2、Header.aspxにポストバックしないでクライアントでMain.aspxに飛ばす。
AutoPostBackをやめて自前でjavascriptのonchangeでparent.main.location.href=
のようにする。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-03-31 13:29
引用:

yosiyongさんの書き込み (2005-03-31 13:02) より:
でも、気持ちがすっきりしません。


ポストバックの仕組みについては、この記事が参考になりそうです。
.NETエンタープライズWebアプリケーション開発技術大全 ポストバック処理
yosiyongさんの例だと、HeaderページのDropDownListの選択値を変えた場合、ポストバック後に最新の選択値がHeader.aspx内の隠し項目ViewStateに反映され、二回目以降のポストバック時にこのViewStateの値を元にサーバサイドでイベントを発生させる処理を行っている。
ところがtargetをMainにしてしまったために、Headerの方のViewStateが更新されなくて、その後のイベント絡みの挙動がおかしくなった、ということではないでしょうか。
私も上記の記事、斜め読みしただけなので間違ってたらすみません。
yosiyong
会議室デビュー日: 2005/03/31
投稿数: 6
投稿日時: 2005-03-31 14:24
引用:

べるさんの書き込み (2005-03-31 13:07) より:
AutoPostBackをtrueにしないと現象が確認できないのですがtrueなのですか?


はい。Trueにしてあります。

ほかのコントロールもあるので2番のアドバイスを使わせていただきたいと思っております。
ご親切に、ありがとうございます。
yosiyong
会議室デビュー日: 2005/03/31
投稿数: 6
投稿日時: 2005-03-31 14:32
引用:

ぼのぼのさんの書き込み (2005-03-31 13:29) より:
ところがtargetをMainにしてしまったために、Headerの方のViewStateが更新されなくて、その後のイベント絡みの挙動がおかしくなった、ということではないでしょうか。


私の勉強不足でそういう現象は納得いかなかったんです。
リンクしていただいたページでもっと勉強させていただきます。
ありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)