リピータを使用して共通コントロールをバインドすると、データバインドコントロールが異なる環境でバインドされていない問題が発生しています。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>
は、我々は以下のリピーターを持っています要約エンティティ。
DataSourceプロパティー・セッターでDataSourceSetプロパティーが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コントロール全体を共通のユーザーコントロールからリピーターのItemTemplate内部に移動すると、機能しますが、コードをプロモートして再利用をコントロールしようとしています。 リピーターアイテムテンプレートの「コンテナアイテムID」がレンダリングされ、データバインドされています。 Container Data Itemの値は、ローカルとテストで同じです。同じDBサーバーだけ異なるWebサーバー、彼らも同じ車両IDを出力します。 – Marc
バージョンの問題以外に何が起こっているのかよくわからないですが、あなたのコントロールのオーバーライドされた 'OnDataBinding'メソッドから' base.OnDataBinding(EventArgs.Empty); 'を呼び出そうとしましたか? – arviman