- PR -

ASPで、マスターページを使う時のObjectDataSorceについて

1
投稿者投稿内容
きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-02-01 22:00
いつもお世話になっております。
環境:VS2005 WinXP

現在ASP2.0で開発しています。
マスターページを使用したWebフォームで、ObjectDataSorceを使用して
Gridviewとバインドさせたいのですがうまくいきません。

ObjectDataSorceのSelectMethodの設定で、SelectParametersに
Text1(テキストボックス)の値を設定し、実際に呼び出すメソッドの
引数(引数の変数名はCode)にしました。

ところが実行すると画面を表示する前にブラウザに以下のエラーが表示されます。
「アプリケーションでサーバー エラーが発生しました。」
「コントロール 'Text1' は ControlParameter 'Code' 内に見つかりませんでした。」

以下のことからマスターページを使うことに原因があるのではと考えています。
@マスターページを使わないWebフォームでは正しく実行できました。
Aマスターページを使うWebフォームでは、ObjectDataSorceでSelectParameters
 のコントロール名を選ぶ際、コンボボックスに同じコントロール名が2つ
 出てきます。

※説明の仕方がわかりにくかったら大変申し訳ないです。

どなたか原因や解決策をご存知の方いらっしゃいましたらご教授ください。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-02-02 07:23
SelectParametersの
ControlParmeterを確認してみてください。

コード:
      <asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
        <SelectParameters>
          <asp:ControlParameter ControlID="Text1" Name="Code" PropertyName="Text" />
        </SelectParameters>
      </asp:ObjectDataSource>


_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-02-02 09:54
ご返信ありがとうございます。

SelectParametersのControlParmeterを確認してみたところ、

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
<SelectParameters>
<asp:ControlParameter ControlID="Text1" Name="Code" PropertyName="Text" Type="String" /> </SelectParameters>
</asp:ObjectDataSource>

という内容で、Accessさんの投稿とType以外は変わらないものでした。
また、マスターページを使用していない正しく動作する方と比べても同じ内容でした。

きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-02-02 17:35
調べてみたところ、
実行時に、マスターページがASPXファイルのコントロールのIDを変更するため、
実行時のControlIDと、ObjectDataSourceのControlParameterプロパティに
設定したControlIDが異なっている
と予想できました。

初期処理で、マスターページが変更したコントロールIDを元に戻す方法など
ないでしょうか?
また、私の予想と原因が違う、など何かご存知の方よろしくお願いします。
きよよ
常連さん
会議室デビュー日: 2007/01/17
投稿数: 32
投稿日時: 2007-02-19 13:50
マスターページを介したコントロール名で、SelectParameterの設定は
できなかったので、セッションIDを使用して解決しました。

ありがとうございました。
1

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