0

したがって、それに関連付けられた更新および削除メソッドを持つ ObjectDataSource があり、DS はグリッドビューに接続されています。メソッドを呼び出すときに、グリッドと同じデータを含むマスター ページのドロップダウンを再設定したいので、次のようにメソッドを呼び出そうとしています。

            MyApp MasterPage = (MyApp)Page.Master;
            MasterPage.getData();

ここで、グリッドから挿入を行うと (これは DS ではなく RowCommand イベントによって処理されます)、これは問題なく機能しますが、DS を介して次のエラーが発生します:「オブジェクト参照がオブジェクトのインスタンスに設定されていません。 "

aspx の特定のフィールドがポストバックからまだ利用できないことがわかりますが、マスター ページに依存しているページがマスター ページを利用できないのはどうしてでしょうか? 参考にならないかな。これにはバックドアトリックがありますか?私は DS を取り除くことができることを知っていますが、ページングとソートが非常に簡単になるため、DS を使用したいと考えています。

ありがとう

4

2 に答える 2

1

masterpage-contentpage life-cycleのイベントの順序を確認します。マスター ページがドロップダウン ボックスにアクセスした後に発生するイベントにコードを移動できる場合があります。


編集:代替

コードを移動できない場合は、マスター ページのプロパティにデータを格納してみてください。ドロップダウンが初期化されたら、マスター ページに戻ってデータを取得します。

protected object SomePropertyICreatedToStoreData {get;set;}

void GetData()
{
    // get the data (this part works already)
    var theData = WhereTheDataComesFrom

    // bind to dropdownlist - doesn't work, so...
    this.SomePropertyICreatedToStoreData = theData;
}

... じゃあ後で

     this.MyDropDownList.DataSource = this.SomePropertyICreatedToStoreData;
于 2012-04-20T16:59:25.453 に答える
0

Masterディレクティブを追加する必要があります。

<%@ MasterType TypeName ="MasterPageClassName" %>

また

<%@ MasterType virtualpath="~/Masters/Master1.master" %>

http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx

更新: コメントで指摘されているように、TypeNameとvirtualpathを分離しました。

于 2012-04-20T17:05:30.173 に答える