2014-03-05 31 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); 
    } 
}