Может ли кто-нибудь объяснить, как/когда запускается объект ObjectDataSource? У меня есть страница ASP.NET с GridView, которая ссылается на ODS. Я поставил точку останова в методе, используемом ODS, и заметил, что он стрелял дважды.ObjectDataSource запускается дважды или самостоятельно
Я заглянул в код, и сначала мне показалось очевидным. У меня было
Page_Load()
{
if(!Page.IsPostBack)
{
MethodA();
MethodB();
}
}
, где MethodA и MethodB оба в конечном итоге вызывали gv.DataBind(). Это имело смысл, поскольку я предполагаю, что каждый вызов GridView.DataBind() приведет к запросу ODS для данных и, следовательно, к запуску метода доступа к данным.
Странно то, что при комментировании вызова MethodA он все еще срабатывает дважды. Проверка стека вызовов показывает, что метод запускается сначала в результате метода MethodB, а затем снова без тропы, кроме [External Code]. Эта загадочная нагрузка не Случается, когда я позволяю MethodA и MethodB выполнять оба.
Любая идея, что здесь происходит? Любая идея, какой у меня может быть другой код, который запрашивает данные ODS? Я начинаю думать, что все эти элементы управления данными «без кода» больше обфускации и BS, чем они того стоят.
Да, это оказалось именно так, мы скрываем/показываем столбцы в событии GridView.DataBound, и если мы этого не делаем, это не срабатывает дважды. Я проверю вашу ссылку, но какой метод вы использовали для решения этой проблемы? – LoveMeSomeCode
Мы переместили скрытие/показ из DataBound в Page_Load. – Homer