2010-02-16 34 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机器的副本,我会用一个网址更新答案,以一个以博客文章开头的页面。 –

相关问题