¿Alguien puede explicar la forma más fácil de proporcionar datos a un usuario control dentro de un repetidor?¿Cómo proporcionar 'datos' al control de usuario dentro del repetidor?
Tengo el siguiente:
Default.aspx
<!-- this.GetData() returns IEnumerable<Object> -->
<asp:Repeater runat="server" datasource='<%#this.GetData()%>'>
<ItemTemplate>
<my:CustomControl runat="server" datasource='<%#Container.DataItem %>
</ItemTemplate>
</asp:Repeater>
Codebehind
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
}
CustomControl.ascx
<!-- Object has property Title -->
<h1><%#this.DataSource.Title%></h1>
Codebehind:
[System.ComponentModel.DefaultBindingProperty("DataSource")]
public partial class CustomControl : System.Web.UI.UserControl
{
public Item DataSource { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
var x = this.DataSource; //null here
}
protected void Page_PreRender(object sender, EventArgs e)
{
var x = this.DataSource; //still null
}
}
es 'this.GetData()' recibe una llamada antes o después de 'Page_Load' donde está su enlace de datos. ¿Puedes simplemente mover '.GetData()' justo antes de tu enlace de datos en 'Page_Load'? – Jay
this.GetData() se llama con la expresión de enlace de datos '#'. Entonces se llama ON databinding ... – Ropstah