Следующий код десериализует Config.xml и загружает значения объекта в сетке. Проблема в том, что когда я выбираю строку, она запускает GridCustomers_RowSelected
, но конфигурационный объект имеет значение null. Я понимаю, что это связано с тем, что каждый раз, когда я выбираю строку, он возвращает сообщения и забывает значения в объекте конфигурации.Сохранять значение объекта после обратной передачи
Одним из решений этой проблемы может быть то, что я храню конфигурационный объект в сеансе или в представлении. Или я десериализую объект вне блока IsPostBack
. Интересно, есть ли другое лучшее решение для сохранения значений в объекте конфигурации.
private Config config = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
config = new Config();
string file = @"C:\Config.xml";
XmlData xmlData = new XmlData(file);
config = xmlData.Deserialize();
StoreCustomers.DataSource = config.Customers;
StoreCustomers.DataBind();
}
}
protected void GridCustomers_RowSelected(object sender, DirectEventArgs e)
{
string customerID = e.ExtraParams["ID"].ToString();
string customerName = e.ExtraParams["Name"].ToString();
Customer customer = new Customer();
customer = config.Customers.Where(a=> a.ID == customerID).SingleOrDefault();
StoreCompanies.DataSource = customer.Companies;
StoreCompanies.DataBind();
}