2009-10-15 3 views
0

У меня есть formview, чье событие загрузки просто перестало работать. Я сделал некоторую отладку и заметил, что она достигает кода, но по какой-то причине атрибуты, которые я добавляю в событии загрузки, больше не отображаются на экране. Это как если что-то происходит после события загрузки формы, которое перезагружает его без каких-либо дополнительных атрибутов. Единственная модификация, которую я сделал до того, как она перестала работать, заключается в том, что перед ней добавлена ​​переменная сеанса. Это не должно приводить к таким резким изменениям.FormView_Load, который перезаписывается C# ASP.NET

Вот мой код:

protected void FormView1_Load(object sender, EventArgs e) 
{ 
    RadioButton rbinjury = (RadioButton)FormView1.FindControl("rbinjury"); 
    RadioButton rbproperty = (RadioButton)FormView1.FindControl("rbproperty"); 
    RadioButton rbboth = (RadioButton)FormView1.FindControl("rbboth"); 
    RadioButton rbyes = (RadioButton)FormView1.FindControl("rbyes"); 
    RadioButton rbno = (RadioButton)FormView1.FindControl("rbno"); 
    RadioButton rbyes2 = (RadioButton)FormView1.FindControl("rbyes2"); 
    RadioButton rbno2 = (RadioButton)FormView1.FindControl("rbno2"); 
    RadioButton rbam = (RadioButton)FormView1.FindControl("rbam"); 
    RadioButton rbpm = (RadioButton)FormView1.FindControl("rbpm"); 

    TextBox txtdate = (TextBox)FormView1.FindControl("txtdate"); 
    DropDownList ddlhour = (DropDownList)FormView1.FindControl("ddlhour"); 
    DropDownList ddltime = (DropDownList)FormView1.FindControl("ddltime"); 
    if (FormView1.CurrentMode == FormViewMode.Insert || FormView1.CurrentMode == FormViewMode.Edit) 
    { 
     txtdate.Attributes.Add("onfocus", "unfocus();"); 
     locList.Attributes.Add("onChange", "postBack();"); 
     ddlhour.Items.Insert(0, new ListItem("Hour", "0")); 
     ddlhour.Items.Insert(1, new ListItem("12", "12")); 
     ddltime.Items.Insert(0, new ListItem("Minute", "0")); 
     for (int i = 1; i < 12; i++) 
     { 
      String hour = Convert.ToString(i); 
      ddlhour.Items.Add(new ListItem(hour, hour)); 
     } 

     for (int i = 0; i < 61; i++) 
     { 
      String time = ""; 
      if (i < 10) 
      { 
       time = ":0" + Convert.ToString(i); 
      } 
      else 
      { 
       time = ":" + Convert.ToString(i); 
      } 
      ddltime.Items.Add(new ListItem(time, time)); 
     } 
     //-----------------------------------------handle radio buttons---------------------------------------------------------------- 
     rbinjury.Attributes.Add("Onclick", "radio('rbinjury','result');"); 
     rbproperty.Attributes.Add("Onclick", "radio('rbproperty','result');"); 
     rbboth.Attributes.Add("Onclick", "radio('rbboth','result');"); 

     rbyes.Attributes.Add("Onclick", "radio('rbyes','inj');"); 
     rbno.Attributes.Add("Onclick", "radio('rbno','inj');"); 

     rbyes2.Attributes.Add("Onclick", "radio('rbyes2','dmg');"); 
     rbno2.Attributes.Add("Onclick", "radio('rbno2','dmg');"); 

     rbam.Attributes.Add("Onclick", "radio('rbam','time');"); 
     rbpm.Attributes.Add("Onclick", "radio('rbpm','time');"); 
    }} 

Любая идея, что может вызвать событие загрузки, чтобы перестать работать? Если я поместил этот же код в событие завершения состояния сохранения страницы, это действительно сработает, но мне не нужно ...

ответ

0

необходимо использовать событие формы формы Formview вместо события загрузки формы для установки значений, попробуйте , используя это

protected void frm_DataBound(object sender, EventArgs e) 
{ 
    if (frm.CurrentMode == FormViewMode.Edit) 
    { 
     TextBox txtdate = (TextBox)frm.FindControl("txtdate"); 
     txtdate.Attributes.Add("", ""); 
    } 
} 

Также проверьте эти темы. ASP.NET Can not Change Visibility of a Formview control FormView.FindControl(): object reference error