我用ObjectDataSource + ASPxGridView創建了一個UserControl。 SelectMethod ObjectDataSource控件的我將根據用戶控件的公共參數的動態地:ObjectDataSource - > SelectMethod未指定
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());
}
}
當我使用上的頁面我的控制是這樣的:
<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>
所有的工作都很好,但我想從代碼隱藏中聲明控制參數:
<uc:PersonsManager ID="personsManager" runat="server" />
,然後在Page_Load中:
personsManager.CompanyID = 2;
如果我用先前的聲明,然後我可以看到用戶控件的ASPxGridView的只有第一次加載了一些數據,因爲任何操作都會對HtmlRowCreated事件錯誤
選擇操作不是由ObjectDataSource控件 'dsPersons' 除非 支持 :用戶控件的ASPxGridView的SelectMethod被指定。
這是怎麼發生的?
謝謝。
你沒有正確理解的情況:我的方法工作正常,當我設置控制參數內聯或內部其他gridView(綁定),但它不工作時,我從代碼隱藏(C#)設置參數。 我認爲ASPxGridView中的問題和它的回調,爲什麼Page_Load被忽略? –
我有點困惑,綁定發生在頁面加載後。參數仍然在標記中設置,對嗎?你想重寫它們?你可能需要處理選擇或選擇或任何方法,並自己構建它來解決這個問題。再次,我隱約憶起,但我知道我已經在那裏不止一次... –
嗯......我有一個頁面上的自定義控件(沒有別的)。 UserControl有一個gridView和dataSource,它具有取決於控件的公共參數的select方法。如果我在標記中設置了這個參數,那麼一切正常,但如果我想從代碼隱藏中動態設置此參數,則在用戶控件的gridView中對數據執行任何操作時會出現錯誤。 –