我用+ ASPxGridView创建了一个ObjectDataSource UserControl。SelectMethod of ObjectDataSource I根据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());
}
}
当我像这样在页面上使用我的控制时:
<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;
如果我使用以前的声明,那么我只能看到某些数据第一次加载UserControl的ASPxGridView,因为任何操作都会导致UserControl的ASPxGridView的HtmlRowCreated事件出现错误:
ObjectDataSource 'dsPersons‘不支持选择操作,除非指定了SelectMethod。
为什么会发生这种情况?
谢谢。
发布于 2010-02-16 09:21:36
当您添加对象数据源时,您将看到一个向导,该向导允许您在对象上选择支持数据库典型CRUD方法的方法。
单击objectDataSource的智能图并选择“配置数据源”,您将看到。
THen通过查看http://msdn.microsoft.com/en-us/library/9a4kyhcx.aspx来学习如何实现这些方法。
祝好运。
发布于 2010-09-17 00:46:40
请看这篇由“手动设置ObjectDataSource.SelectMethod属性错误” Eran Nachum撰写的博客文章。他描述了如何在OnInit事件期间设置网格的数据源,然后在OnPreRender期间进行数据绑定。
(上面提到的网站已不再活跃。在回程机上有一篇博客文章的副本:Eran Nachum 2007年12月在回程机上的博客)
https://stackoverflow.com/questions/2271678
复制相似问题