Как ссылаться на элемент управления с привязкой к данным из события ObjectDataSource? - PullRequest
1 голос
/ 20 декабря 2010

Возьмем, к примеру, элемент управления DetailsView с ObjectDataSource в качестве источника данных.

Обычно в событии DetailsView.ItemUpdated я получаю ссылку на представление сведений путем приведения sender:

DetailsView dv = (DetailsView)sender;

В определенных ситуациях становится необходимым обрабатывать событие внутри события ObjectDataSource.ItemUpdated.В этом случае sender теперь имеет тип ObjectDataSource.Я хочу написать чистый код, который не жестко запрограммирован, например,

Label label1 = DetailsView1.FindControl("Label1");

. Я просмотрел документацию и также провел несколько поисков, но не смог найти, как написать некоторый код, подобный следующему:

protected void ObjectDataSource1_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
   ObjectDataSource ods = (ObjectDataSource)sender;
   DetailsView dv = (DetailsView)ods.SOMETHING_HERE;
}

Кто-нибудь знает, что я должен вставить в SOMETHING_HERE во фрагменте выше?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2010

Учитывая приведенный вами пример, я не думаю, что вы можете заменить что-то на Something_HereЭто ODS, связанный с DV, а не наоборот.Также один источник данных может быть связан с несколькими элементами управления DataBound.Так что, насколько я знаю, это просто невозможно.

0 голосов
/ 20 декабря 2010

Это происходит потому, что событие «OnInserted» предполагается как событие, которое исследует значения возвращаемого значения или выходных параметров или определяет, было ли выброшено исключение после завершения операции вставки. Возвращаемое значение, выходные параметры и свойства обработки исключений доступны из объекта ObjectDataSourceStatusEventArgs, который связан с событием.

Здесь вы можете просто позвонить ObjectDataSource.select(), который возвращает представление в этом случае, но я не думаю, что это хороший выбор. Вы должны пересмотреть свою бизнес-логику и попытаться управлять ею где-нибудь, в этом есть смысл

В любом случае ваш код должен выглядеть следующим образом:

ObjectDataSource ods = YourDataSource.select(); 
DetailsView dv = (DetailsView)ods; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...