Lets say i have this usercontrol
public class test : UserControl {
public int Count { get; set; }
public test() {
Count = 3;
}
public override DataBind() {
aRepeater.DataSource = dal.GetObjects(Count);
base.DataBind();
}
}
and i use it on my page like this
<my:test runat="server" Count="<# something %>" />
my problem now is that i am not able to get the value of Count in my usercontrol before after the call to base.DataBind(). I guess its something with databinding values to itself. The workaround sofar has therefor been
public override DataBind() {
base.DataBind(); // to bind values to self
aRepeater.DataSource = dal.GetObjects(Count);
base.DataBind(); // to bind new values that is dependent on the the first bind
}
It works, but it just doesn’t seem right. My question is therefor whats the best practices is for this scenario.
Just override OnDataBinding method, not DataBind:
DataBind method essentially consists of two steps: 1) OnDataBinding(), 2) DataBind() for each child control.