ObjectDataSource -> SelectMethod не указан - PullRequest
1 голос
/ 16 февраля 2010

Я создал UserControl с ObjectDataSource + ASPxGridView. SelectMethod из ObjectDataSource Я устанавливаю динамически в зависимости от публичного параметра 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>

Все отлично работает, но я хочу объявить параметр управления из выделенного кода :

<uc:PersonsManager ID="personsManager" runat="server" />

и затем на Page_Load:

personsManager.CompanyID = 2;

И если я использую предыдущее объявление, то вижу только первую загрузку ASPxGridView UserControl с некоторыми данными, потому что любая манипуляция вызовет ошибку при событии HtmlRowCreated ASPxGridView UserControl:

Операция выбора не поддерживается ObjectDataSource 'dsPersons', если указан метод выбора.

Почему это происходит?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2010

Посмотрите на эту запись в блоге "Вручную установить свойство BUG ObjectDataSource.SelectMethod" от Eran Nachum . Он описывает, как вы должны установить источник данных сетки во время события OnInit, а затем выполнить привязку данных во время OnPreRender.

(упомянутый выше веб-сайт больше не активен. Копия сообщения блога на машине обратного хода: Блог Эрана Нахума с декабря 2007 года на машине обратного хода )

0 голосов
/ 16 февраля 2010

Когда вы добавляете источник данных объекта, вам предоставляется мастер, который позволяет вам выбирать метододы для вашего объекта, которые поддерживают типичные методы CRUD базы данных.

Щелкните смарт-тег вашего objectDataSource и выберите «настроить источник данных», и вы увидите.

Затем посмотрите на http://msdn.microsoft.com/en-us/library/9a4kyhcx.aspx, чтобы узнать, как реализовать эти методы.

удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...