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' によってサポートされません。
なぜこうなった?
ありがとう。