Почему мой пользовательский серверный элемент управления не поддерживает информацию о состоянии просмотра?
Я создаю собственный серверный элемент управления. вот соответствующий элемент пользовательского контроля:
public class ManagementUserControl : UserControl
{
GridView _grv;
public ManagementUserControl()
{
_grv = new GridView();
}
/// <summary>
/// binds the grid to controls.
/// </summary>
public override void DataBind()
{
_grv.DataBind();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
//add controls only when is not postback
InitializeGrid();
}
}
void InitializeGrid()
{
this.Controls.Add(_grv);
}
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
public object DataSource
{
get { return _grv.DataSource; }
set { _grv.DataSource = value; }
}
}
я добавляю объект источника данных в код позади Default.aspx следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<string> lst = new List<string>();
lst.Add("test1");
lst.Add("test2");
lst.Add("test3");
ucManagement.DataSource = lst;
ucManagement.DataBind();
}
}
Во-первых, он работает нормально, но когда я отправляю обратно страницу, элемент управления исчезает. поэтому я проверил коллекцию Conrols в событии Load и увидел, что она пустая. хуже того, что grid.DataSource является нулевым при обратной передаче!! почему состояние представления сетки не поддерживается, а значение источника данных теряется при обратной передаче? кстати, viewstate нигде не выключен в файле page или web.config.
1 ответ
Решение