將數據綁定控件綁定到不同的環境中時,使用數據綁定控件綁定公共控件的中繼器會遇到問題。ASP.Net數據綁定環境問題
舊機器問題。
我們有以下轉發:
<web:Repeater ID="rptVehicles" runat="server" DataType="Entities.VehicleSummary" OnItemDataBound="rptItemList_OnItemDataBound">
<ItemTemplate>
<div style="display:none">
<p>Container Item = <%# (Container.DataItem == null) ? "null" : "not null" %></p>
<p>Container Item Id = <%# (Container.DataItem.ID == null) ? "null" : "not null" %></p>
<p>Container Item Id = <%# Container.DataItem.ID %></p>
</div>
<common:VehicleItem runat="server" ID="itmVehicle" DataSource="<%# Container.DataItem %>" ImageDefinition="<%# this.ImageDefinition %>" />
</ItemTemplate>
</web:Repeater>
和車輛資料的用戶控件的內容:
<div class="m-vitem">
<div style="display:none">
<p>DataSourceSet = <%# this.DataSourceSet %></p>
<p>Item DataSource = <%# (this.DataSource == null)? "null" : "not null" %></p>
</div>
在本地的數據源setter方法被調用傳遞車輛摘要實體。
DataSourceSet屬性在DataSource屬性設置器中設置爲true,本地輸出在測試其false時是true。
我們在本地和測試環境中使用不同的.Net版本,是否有人知道版本之間的數據綁定處理和可以做什麼之間是否有區別,還是我吠叫錯誤的樹?
LOCAL - Microsoft .NET Framework版本:2.0.50727.4961; ASP.NET版本:2.0.50727.4955 測試 - Microsoft .NET Framework版本:2.0.50727.3082; ASP.NET版本:2.0.50727.3082
你在本地與測試中獲得Container.DataItem的值是什麼?他們是一樣的嗎? 另外,中繼器在測試機器上綁定的位置在哪裏?你確定它確實被綁定到數據? – arviman
它綁定在pre_render上,我也將它移動到了加載狀態。同樣的結果。如果我將整個Vehicle Item控件從普通用戶控件移動到Repeater的ItemTemplate中,它將起作用,但我們試圖促進代碼和控件的重用。 中繼器項目模板中的「容器項目ID」正在呈現,因此它正在進行數據綁定。 Container Data Item的值在本地和測試中是相同的。相同的DB服務器只是不同的Web服務器,他們也輸出相同的車輛ID。 – Marc
我不完全確定這是爲什麼發生以外的版本問題,但您是否嘗試調用'base.OnDataBinding(EventArgs.Empty);'從您的控件中重寫的'OnDataBinding'方法? – arviman