У меня проблема с передачей переменной с главной страницы, содержащей пользовательский элемент управления, в сам пользовательский элемент управления.Хотя переданная переменная обычно доступна в выделенном для кода пользовательском элементе управления, событие page_load, похоже, не может его прочитать.
Мой код -
В выделенном фрагменте главной страницы:
protected void FindCCFsButton_Click(object sender, EventArgs e)
{
if (CustomerDropDown.SelectedIndex != 0)
{ SearchUcCCFList.SetCustID(CustomerDropDown.SelectedValue); }
}
(SearchUcCCFList - это экземпляр пользовательского элемента управления на главной странице aspx).В коде пользовательского элемента управления:
public partial class ucCCFList : System.Web.UI.UserControl
{
public string srchCust { get; set; }
public void SetCustID(string custID)
{
srchCust = custID;
testCustLabel.Text = GetCustID(); //this works
}
public string GetCustID()
{
return srchCust;
}
protected void Page_Load(object sender, EventArgs e)
{
CCFGridView.DataSource = DAL.SearchCCFs(custID : GetCustID()); //doesn't work
CCFGridView.DataBind();
test2CustLabel.Text = GetCustID(); //doesn't work
}
В событии Page_Load GetCustId () ничего не возвращает (поэтому записи не фильтруются и все возвращаются), хотя его можно прочитать в методах внеPage_Load.
Возможно, я делаю ошибку для начинающих, но любая помощь будет признательна.
Редактировать - следуя совету Алана в комментариях, я прошел последовательность загрузки страницы, и кажется, чтоСобытие Page_Load пользовательского элемента управления запускается ДО того, как код нажмет кнопку главной страницы, поэтому переменная еще не доступна.Последовательность после нажатия кнопки:
- Пользовательский элемент управления Page_Load запускается
- Код события кнопки на главной странице
- Другой код (вне Page_Load) в пользовательских элементах управления запускаетсяследовательно, переменная доступна здесь.
Это кажется немного странным, есть ли другой способ передать переменную в пользовательские элементы управления Page_Load?