2014-03-05 59 views
0

如果我沒有查詢字符串加載此頁!!IsPostBack正確設置viewstate變量,它可用於我的按鈕單擊事件。但是,如果我將M設置爲某種值,並在Page_load事件關閉之前嘗試自動啓動按鈕單擊,則veiwstate變量爲null並引發錯誤。任何想法如何我可以解決這個問題?我可以直接將Viewstate對象以某種方式傳遞給button1_Click事件嗎?頁面加載後是否有事件發生,如果查詢字符串存在,我可以點擊發送按鈕點擊?從查詢字符串設置查看狀態

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     if (!string.IsNullOrEmpty(Request.QueryString["S"])) 
     { 
      TextBox1.Text = Request.QueryString["S"]; 

      if (string.IsNullOrEmpty(Request.QueryString["T"]) && string.IsNullOrEmpty(Request.QueryString["M"])) 
      { 
       Button1_Click(null, null); 
      } 

     } 
     if (!string.IsNullOrEmpty(Request.QueryString["T"])) 
     { 
      TextBox2.Text = Request.QueryString["T"]; 
      Button1_Click(null, null); 
     } 
     if (!string.IsNullOrEmpty(Request.QueryString["M"])) 
     { 
      ViewState["checkedOEM"] = Request.QueryString["M"]; 
      Button1_Click(null, null); 
     } 
     if (ViewState["checkedOEM"] == null) 
     { 
      CheckBox1.Checked = true; 
      checkedOEM = CheckBox1.Text; 
      ViewState["checkedOEM"] = checkedOEM; 
     } 
    } 
} 
+0

什麼是錯誤,以及在哪一行?另外你爲什麼在這裏使用ViewState? – Andrei

+0

它在Button1_Click事件上的空引用異常:checkedOEM = ViewState [「checkedOEM」]。ToString(); – user1431356

+0

至於爲什麼我使用視圖狀態,我有幾個複選框觸發事件,以確保只能選擇一個複選框。當他們發射回傳時,我輸了一個。在變量中設置選定的一個比試圖找出當前設置的幾個更容易。我還需要其他方法作爲支票在特定情況下進行進一步處理。 – user1431356

回答

0

因此,我將Page_Load事件分解爲事前和事件後的事件以獲取我正在尋找的行爲。

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(Request.QueryString["M"])) 
    { 
     ViewState["checkedOEM"] = Request.QueryString["M"];    
    } 
} 
protected void Page_Load(object sender, EventArgs e) 
{ 
    //hide all fields untill they need to be shown 
    HyperLink2.Visible = false; 
    HyperLink3.Visible = false; 
    Image1.Visible = false; 
    debugLabel.Text = null; 
    debugLabel2.Text = null; 

    if (!IsPostBack) 
    { 
     LinkButton1.Visible = false; 

     if (ViewState["checkedOEM"] == null) 
     { 
      CheckBox1.Checked = true; 
      checkedOEM = CheckBox1.Text; 
      ViewState["checkedOEM"] = checkedOEM; 
     } 
     if (!string.IsNullOrEmpty(Request.QueryString["M"])) 
     { 
      CheckBox1.Visible = false; 
      CheckBox2.Visible = false; 
      CheckBox3.Visible = false; 
      CheckBox4.Visible = false; 
      Button1.Visible = false; 
     } 
    } 
    lblStatus.Text = string.Empty; 
} 

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(Request.QueryString["S"])) 
    { 
     TextBox1.Text = Request.QueryString["S"]; 

     if (string.IsNullOrEmpty(Request.QueryString["T"]) && string.IsNullOrEmpty(Request.QueryString["M"])) 
     { 
      Button1_Click(null, null); 
     } 

    } 
    if (!string.IsNullOrEmpty(Request.QueryString["T"])) 
    { 
     TextBox2.Text = Request.QueryString["T"]; 
     Button1_Click(null, null); 
    } 
    if (!string.IsNullOrEmpty(Request.QueryString["M"])) 
    {    
     Button1_Click(null, null); 
    } 
}