Я использую объект ObjectDataSource с GridView с обработчиком OnObjectCreated по коду. Если я программно изменяю значение дочернего элемента управления в GridView, весь элемент управления получает привязку данных второй раз в том же запросе (как показано обработчиком OnObjectCreated), чего я не хочу. Это происходит в исходном запросе GET страницы (так что это не проблема обратной передачи). Вот что след показывает:ObjectDataSource, созданный дважды при изменении управления
aspx.page Begin PreRender
Custom IN handleDSObjectCreated() => tsDao: ETime.DAL.TimeSheetDAO
Custom OUT handleDSObjectCreated()
Custom IN handleDSObjectCreated() => tsDao: ETime.DAL.TimeSheetDAO
Custom OUT handleDSObjectCreated()
aspx.page End PreRender
Есть ли способ, чтобы предотвратить второй раунд привязки данных, даже если я манипулировать дочерние элементы управления? Ничто в слое данных не меняется, поэтому оно не требуется. Обратите внимание, что также нет ссылок на изображения, которые, похоже, также вызывают двойную привязку данных. Благодарю.
Update:
Я не уверен, если это поможет или нет, но глядя на трассировку стека в точке, которая называется обработчиком OnObjectCreated показывает следующие отличия:
Первое событие Handler Призвание:
System.Web.dll!System.Web.UI.WebControls.GridView.DataBind() + 0x5 bytes
System.Web.dll!System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() + 0x53 bytes
System.Web.dll!System.Web.UI.WebControls.GridView.OnPreRender(System.EventArgs e = {System.EventArgs}) + 0x19 bytes
System.Web.dll!System.Web.UI.Control.PreRenderRecursiveInternal() + 0x57 bytes
Второй Обработчик события Призвание:
System.Web.dll!System.Web.UI.WebControls.GridView.DataBind() + 0x5 bytes
System.Web.dll!System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() + 0x53 bytes
System.Web.dll!System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() + 0x46 bytes
System.Web.dll!System.Web.UI.Control.EnsureChildControls() + 0x58 bytes
System.Web.dll!System.Web.UI.Control.PreRenderRecursiveInternal() + 0x33 bytes
Опять же, это все из первоначального запроса GET. Любые идеи, почему это вызвано дважды?
К сожалению, нет. Это происходит по инициативе GET. –