2010-02-16 40 views
1

我用ObjectDataSource + ASPxGridView創建了一個UserControlSelectMethod 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被指定。

這是怎麼發生的?

謝謝。

回答

0

當您添加對象數據源時,您將看到一個嚮導,該向導允許您選擇對象上支持數據庫典型CRUD方法的方法。

單擊objectDataSource的smarttag並選擇'configure datasource',你會看到。

然後看看http://msdn.microsoft.com/en-us/library/9a4kyhcx.aspx學習如何實現這些方法..

好運。

+0

你沒有正確理解的情況:我的方法工作正常,當我設置控制參數內聯或內部其他gridView(綁定),但它不工作時,我從代碼隱藏(C#)設置參數。 我認爲ASPxGridView中的問題和它的回調,爲什麼Page_Load被忽略? –

+0

我有點困惑,綁定發生在頁面加載後。參數仍然在標記中設置,對嗎?你想重寫它們?你可能需要處理選擇或選擇或任何方法,並自己構建它來解決這個問題。再次,我隱約憶起,但我知道我已經在那裏不止一次... –

+0

嗯......我有一個頁面上的自定義控件(沒有別的)。 UserControl有一個gridView和dataSource,它具有取決於控件的公共參數的select方法。如果我在標記中設置了這個參數,那麼一切正常,但如果我想從代碼隱藏中動態設置此參數,則在用戶控件的gridView中對數據執行任何操作時會出現錯誤。 –

0

看看這篇博客文章"Manually Set ObjectDataSource.SelectMethod Property BUG"作者Eran Nachum。他描述瞭如何在OnInit事件期間設置網格的數據源,然後在OnPreRender期間執行數據綁定。

(上面提到的網站不再活動有博客文章的自由之路機器上的一個副本:Eran Nachum's Blog from December 2007 in the wayback machine

+2

提供的url已經死了:( – breez

+1

是的,不幸的是,幸運的是它看起來像是wayback機器的副本,我會用一個網址更新答案,以一個以博客文章開頭的頁面。 –

相關問題