This is my favorite trick :)
Our scenario is to first render the control. Then, using some input from the user, visualize additional controls and ask them to respond to events.
- - , PostBack, ViewState. ; ViewState LoadViewState(), , .
, LoadViewState() SaveViewState(), .
( , , , , )
private string searchQuery = null;
private void SearchButton(object sender, EventArgs e)
{
searchQuery = searchBox.Text;
var results = DataLayer.PerformSearch(searchQuery);
CreateLinkButtonControls(results);
}
protected override object SaveViewState()
{
object baseState = base.SaveViewState();
return new object[] { baseState, searchQuery };
}
protected override void LoadViewState(object savedState)
{
object[] stateArray = (object[])savedState;
searchQuery = stateArray[1] as string;
var results = DataLayer.PerformSearch(searchQuery);
CreateLinkButtonControls(results);
base.LoadViewState(stateArray[0]);
}