<asp:Repeater ID="repFilter" runat="server">
<HeaderTemplate>
<div id="posting" align="center">
</HeaderTemplate>
<ItemTemplate>
<div class="friends_area" id="record-">
<%# ((Alert)Container.DataItem).Message %>
<asp:Literal Visible="false" ID="litAlertId" Text='<%# ((Alert)Container.DataItem).AlertId %>' runat="server"></asp:Literal>
<Company:Comments ID="Comments1" SystemObjectRecordId='<%# ((Alert)Container.DataItem).AlertId %>' runat="server" SystemObjectId="7"></Company:Comments>
</div>
</ItemTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</asp:Repeater>
У меня возникла проблема с установкой атрибута SystemObjectRecordID моего настраиваемого элемента управления внутри ретранслятора. В настоящее время значение заканчивается в базе данных как ноль. Вещи, которые я проверил/стоит указать:DataBinding не работает в моем ASP.NET UserControl
1) AlertId - это столбец идентификатора первичного ключа в базе данных, а таблица имеет множество строк, поэтому AlertId должен возвращать несколько значений.
2) Тип данных столбца БД (bigint) и тип данных AlertId (long) и тип данных переменной (System) объекта SystemObjectRecordID (длинный).
3) Если я установил '<% # ((Alert) Container.DataItem) .AlertId%>' в атрибут Text литерала, я получаю ожидаемые результаты. Таким образом, это как-то связано с моим настраиваемым элементом управления и, в частности, с привязкой данных к атрибуту SystemObjectRecordID.
4) Если я изменяю SystemObjectRecordID от long до строки, а затем do ((Alert) Container.DataItem) .AlertId.ToString() значение, которое я получаю для SystemObjectRecordId в отладке, является нулевым (но оно по-прежнему работает, когда оно назначено текстовый атрибут литерала).
5) Расположение пользовательского элемента управления - default.aspx, а элемент управления - comments.ascx. Файлы кода не имеют пространства имен.
6) Я пытался манипулировать OnItemDataBound свойство моего повторителя, но так как я доказал с буквальным, что данные является получение связано с использованием декларативного значения Я не уверен, что еще я мог бы делать внутри метода логики OnItemDataBound.
После того, как конечный пользователь делает комментарий в пользовательском интерфейсе, значение SystemObjectRecordId (которое должно было быть назначено, когда страница загружена - и мы знаем, что это имеет место в случае с буквалом), должна быть передана кодовому имени обычай UserControl:
namespace Company.ProjectWeb.UserControls
{
public partial class Comments : UserControl, IComments
{
private readonly IUserSession _userSession;
private CommentsPresenter _presenter;
public int SystemObjectId { get; set; }
public long SystemObjectRecordId { get; set; }
Независимо от того, что я делаю, я всегда получаю ноль для SystemObjectRecordId при пропускании через таможенный контроль пользователя у меня на странице default.aspx. Я из идей - мог бы использовать некоторые предложения на этом этапе. Благодарю.
ретранслятор находится в панели обновления? – onof
да, это правильно ... –