Я использую ObjectDataSource для привязки данных к GridView; он работает нормально, за исключением того, что он всегда создает новый объект для использования в качестве источника данных. Я могу отлично выполнить всю настройку, но я не могу использовать экземпляр существующего объекта, чтобы указать его в качестве «источника данных». Можно ли это сделать? Если да, то как?
Если это невозможно, то почему?
Обновлено: Вот суть того, что происходит (типы объектов изменены): на первой странице вы редактируете атрибуты собаки. Один из атрибутов - «есть щенки», и если это правда, на следующей странице вы указываете имена этих щенков. В моем случае происходит то, что эти щенки связываются не с исходной собакой, а с «новой» собакой. (Подразумевается, что моя проблема - "сука", случайно. ;-))





Как я только что обнаружил здесь в моем собственном вопросе, элементы, хранящиеся в кэше приложения, будут передаваться в качестве ссылки для использования. Вы можете рассмотреть возможность хранения ваших данных там (или, возможно, также в сеансе) и передавать элементы таким образом.
Просто оберните объект сеанса вокруг оператора прямого приведения, чтобы указать формат элемента. Что-то вроде MyObjectDataSource = DirectCast (Session ("MyStoredData"), DataTable) в VB.net
Создайте обработчик событий для события ObjectCreating в ObjectDataSource.
Вы можете назначить экземпляр с помощью свойства ObjectDataSourceEventArgs
protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = myObject;
}
Подключите это событие также к разметке
<asp:ObjectDataSource OnObjectCreating = "ObjectDataSource1_ObjectCreating" />
Именно то, что я искал! Спасибо!
Нужно ли это явно добавлять как событие (например, во время page_load) или asp позаботится об этом?
Объект, который я хочу использовать, находится в сеансе. Вы знаете, как я могу указать этот объект как источник моего ObjectDataSource?