将数据绑定控件绑定到不同的环境中时,使用数据绑定控件绑定公共控件的中继器会遇到问题。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