Я устанавливаю источник данных моего повторителя в список (MyProducts - простой класс, состоящий только из get / setters).
После этого и DataBind () я вижу в режиме отладки, что DataItemкаждого Repeater.Items является нулевым.При выполнении обратной передачи и попытке обновления MyProducts Repeater.Items [n] .DataItem по-прежнему имеет значение null, и я не могу его привести к выполнению своей работы.
Почему DataItem не установлен для каждого RepeaterItemкогда я свяжу свой репитер?Я не могу понять / Google это.Все остальные аспекты моего кода работают правильно (вывод данных из MyProducts в aspx, используя, например:
<asp:TextBox runat="server" id="q" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:TextBox>
Дополнительный код:
public class MyProducts
{
public string Number
{
get; set;
}
public decimal Price
{
get; set;
}
public decimal Quantity
{
get; set;
}
public decimal Total
{
get { return Quantity * Price; }
}
}
Генерация:
public List<MyProducts> TheProducts
{
get { // Invoking webservice, getting response as xml and converting it to a list of MyProducts }
}
Мой пользовательский элемент управления:
// Bind products in cart
r.DataSource = TheProducts;
r.DataBind();
// Debugging "r.Items[n].DataItem" now shows "null", eventhough all objects has been correctly binded
Правка # 2, информация об отладке. DataSource загружается правильно, но Repeater.Items [3] .DataItem имеет значение null. Оно должно иметь значение, верно? снимок экрана
Редактировать # 3, я понял, я думал, что DataItem всегда был доступен, когда установлен DataSource, и не думал включать полный код (я пытался получить к нему доступ вPage_Load).
После того, как пользователь отредактировал количественное значение, я хотел сохранить новое количество для MyProducts. Я решил это, поместив скрытое поле, содержащее идентификатор MyProducts, чтобы я мог посмотреть его вручнуюи возьмите оттуда объект MyProducts.
Спасибо emremp, Марку Авениусу и всем остальным, кто подключился.