Имам проблем с предаването на променлива от главна страница, съдържаща потребителска контрола, към самата потребителска контрола. Въпреки че подадената променлива е налична като цяло в кода зад потребителския контрол, събитието 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?
SearchUcCCFList.SetCustID
? Трябва да е преди или в Page_Load на страницата - person Tim B James   schedule 02.11.2011