- PR -

WebユーザコントロールにWebユーザコントロールを貼り付けると…

1
投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-11 12:04
こんにちは。

 テキストボックスとボタンのWebユーザコントロール…Aを作ります。
 Aと、複数のWebコントロールを含むWebユーザコントロール…Bを作ります。
 Webフォーム…Cに、AとBを貼り付けます。

 ここで問題なのですが、Bなり、Cに直接おいたWebコントロールにて、
Cにポストバックが発生した場合、B上のAのテキストボックスの内容が日本語の時、
ポストバック前後で内容が保持されません。C上のAは、保持されます。
また、B上のAでも、英数字記号だと保持されます。

 具体的には、Aはディレクトリを選ばせるコントロールです。
ボタンクリックでディレクトリ選択ウインドウが表示されます。
選択したディレクトリをテキストボックスに表示します。

AのPage_Load処理
if not ispostback then
textbox1.text = "選択して"
endif

ページを初めて表示したときは「選択して」と表示されているのですが、
イベントを発生させると、「w??」などの内容に変わってしまいます。
ところが、「C:\Windows」などの英字記号のみ(シングルバイトのみ、の方が正しい?)
の場合は、そのまま保持されています。
Page_Loadにブレークポイントを張ってみると、最初のページ表示の時は
textbox1.textは空文字列、ポストバックによるときはすでにおかしな値が入っていました。

 これはWebユーザコントロールの上にWebユーザコントロールを置いた場合に発生し、
Webフォームの上にWebユーザコントロールを置いた場合は発生しません。


 原因や回避方法に関する情報をお持ちの方はいらっしゃいますでしょうか。


追加:
日本語が化けるページと化けないページがありました。
化けるページは「SmartDirective」を指定していていましたが、
ユーザコントロール内でwindow.openをするのではずしました。
化けないページは新規で起こしたページです。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-07-14 09:27 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-16 16:09
一応、解決・・・かも。

aspxファイルがs-jisで保存されていました。
ascxファイルはutf-8のため、文字コードが不整合を起こしていました。

aspxファイルは、[HEAD][META]でcharsetを指定すると、
保存される文字コードが変わるようです。
1

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