DataItem no Repeater.Items é sempre nulo
Estou definindo o DataSource do meu repetidor como uma Lista (MyProducts é uma classe simples, consistindo apenas em get / setters).
Depois disso e DataBind (), posso ver no modo de depuração que o DataItem de cada Repeater.Items é nulo. Ao criar um postback e tentar atualizar MyProducts, o Repeater.Items [n] .DataItem ainda é nulo e não consigo convertê-lo para realizar meu trabalho.
Por que o DataItem não está definido em cada RepeaterItem, quando vinculo meu repetidor? Não consigo descobrir / pesquisar no Google. Todos os outros aspectos do meu código funcionam corretamente (saída de dados de MyProducts para aspx, usando, por exemplo:
<asp:TextBox runat="server" id="q" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:TextBox>
Mais código:
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; }
}
}
Gerando:
public List<MyProducts> TheProducts
{
get { // Invoking webservice, getting response as xml and converting it to a list of MyProducts }
}
Meu controle de usuário:
// Bind products in cart
r.DataSource = TheProducts;
r.DataBind();
// Debugging "r.Items[n].DataItem" now shows "null", eventhough all objects has been correctly binded
Edite # 2, as informações de depuração. O DataSource é carregado corretamente, mas Repeater.Items [3] .DataItem é nulo. Deve ter um valor, certo?captura de tela
Edit # 3, eu o comprei agora, pensei que o DataItem estivesse sempre acessível quando o DataSource estiver definido e não pensei em incluir o código completo (tentei acessá-lo no Page_Load).
Depois que o usuário editou um valor de quantidade, eu desejei salvar a nova quantidade para um MyProducts. Eu o resolvi colocando um campo oculto que contém o ID de MyProducts, para que eu possa procurá-lo manualmente e obter o objeto MyProducts a partir daí.
Graças a emremp, Mark Avenius e todos os outros que participaram.