1

ObjectDataSource + ASPxGridViewでUserControlを作成しました。ObjectDataSource のSelectMethodは、UserControl のパブリック パラメータに応じて動的に設定します。

private int _companyID = -1;
public int CompanyID
{
    get { return _companyID; }
    set
    {
        _companyID = value;

        dsPersons.SelectMethod = "GetPersonsByCompany";
        dsPersons.SortParameterName = "sort";
        dsPersons.SelectParameters.Clear();
        dsPersons.SelectParameters.Add("companyID", DbType.Int32, value.ToString());
    }
}

次のように Page でコントロールを使用すると:

<uc:PersonsManager ID="personsManager" runat="server" CompanyID="2" />

または、次のように別の ASPxGridView に配置します。

<dxwgv:ASPxGridView ID="gridViewCompany" runat="server" DataSourceID="dsCompany" KeyFieldName="ID" Width="100%"
    AutoGenerateColumns="false">
    <Columns>
        <dxwgv:GridViewDataColumn>
            <DataItemTemplate>
                <uc:PersonsManager ID="personsManager" runat="server" CompanyID='<%# Bind("ID") %>' />
            </DataItemTemplate>
        </dxwgv:GridViewDataColumn>
    </Columns>
</dxwgv:ASPxGridView>

すべて正常に動作しますが、コード ビハインドから Control パラメータを宣言したいと思います

<uc:PersonsManager ID="personsManager" runat="server" />

そしてPage_Loadで:

personsManager.CompanyID = 2;

以前の宣言を使用すると、ユーザー コントロールの ASPxGridView の HtmlRowCreated イベントでエラーが発生するため、いくつかのデータを含むユーザー コントロールの ASPxGridView の最初の読み込みのみが表示されます。

SelectMethod が指定されていない限り、Select 操作は ObjectDataSource 'dsPersons' によってサポートされません。

なぜこうなった?

ありがとう。

4

2 に答える 2

0

EranNachumによるこのブログ投稿「ManuallySetObjectDataSource.SelectMethodPropertyBUG」をご覧ください。彼は、OnInitイベント中にグリッドのデータソースを設定してから、OnPreRender中にデータバインディングを実行する方法について説明しています。

(上記のWebサイトはアクティブではなくなりました。ウェイバックマシンにブログ投稿のコピーがあります:ウェイバックマシンに2007年12月からのEran Nachumのブログ

于 2010-09-17T00:46:40.300 に答える
0

オブジェクト データソースを追加すると、データベースの一般的な CRUD メソッドをサポートするオブジェクトのメソッドを選択できるウィザードが表示されます。

objectDataSource のスマートタグをクリックし、[データソースの構成] を選択すると表示されます。

これらのメソッドを実装する方法については、 http: //msdn.microsoft.com/en-us/library/9a4kyhcx.aspx を参照してください。

幸運を。

于 2010-02-16T09:21:36.403 に答える