2011-05-02 137 views
2

问: 我疯了吗?我有这个活动。该名称的复制/粘贴,所以我知道这不是打字错误。我在这里错过了什么? (不用担心参数,请,这是训练,我已经被告知不要在这个时候使用它们)未找到按钮点击事件?

 <asp:UpdatePanel ID="UdpEPL" runat="server" UpdateMode="Conditional" Visible="False"> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="BtnEpl" EventName="BtnEpl_Click" /> 
      </Triggers> 
     <ContentTemplate> 

     <!--some label and textbox controls--> 

     <br /> 
     <asp:Button ID="BtnEpl" runat="server" Text="Submit" AutoPostBack="True" 
        onclick="BtnEpl_Click" /> 
     <br /> 

     <!--the second update panel--> 

     <asp:UpdatePanel ID="UdpEplShow" runat="server" UpdateMode="Conditional" Visible="False"> 
        <Triggers> 
          <asp:AsyncPostBackTrigger ControlID="BtnEpl" EventName="BtnEpl_Click" /> 
        </Triggers> 
     <ContentTemplate>  
     <!--more labels displaying the user input from the first update panel--> 

代码隐藏:

protected void BtnEpl_Click(object sender, EventArgs e) 
     { 
      string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 
      string EplQuery = "INSERT INTO EPL (Entity, Employees, CA, MI, NY, NJ, Primex, EplLim, EplSir, Premium, Wage, Sublim) VALUES ('" + TbEplEntity + "', '" + TbEplTotalEmpl + "', '" + TbEplCalEmpl + "', '" + TbEplMichEmpl + "', '" + TbEplNyEmpl + "', '" + TbEplNjEmpl + "', '" + TbEplPrimEx + "', '" + TbEplLim + "', '" + TbEplEplSir + "', '" + TbEplPrem + "', '" + TbEplWage + "', '" + TbEplInvestCost + "')"; 
      string EplIdQuery = "SELECT SCOPE_IDENTITY() AS LastInsertedInstanceId"; 

     using (SqlConnection EplConn = new SqlConnection(connectionString)) 
     { 
      EplConn.Open(); 
      SqlCommand EplCmd = new SqlCommand(EplQuery, EplConn); 
      SqlCommand EplIdCmd = new SqlCommand(EplIdQuery, EplConn); 
      using (EplCmd) 
      using (EplIdCmd) 
      { 
       EplCmd.ExecuteNonQuery(); 
       SqlDataReader EplDr = EplIdCmd.ExecuteReader(); 
       EplDr.Read(); 
       int lastInsertedInstanceId = Convert.ToInt32(EplDr[0]); 


      } 

      string x = Request.QueryString["InstanceId"]; 
      string EplShowQuery = "SELECT Entity, Employees, CA, MI, NY, NJ, Primex, EplLim, EplSir, Premium, Wage, Sublim FROM EPL WHERE InstanceId =" + x; 
      using (SqlCommand EplShowCmd = new SqlCommand(EplShowQuery, EplConn)) 
      { 
       SqlDataReader EplDr = EplShowCmd.ExecuteReader(); 
       EplDr.Read(); 
       LblEplShowEntity.Text = EplDr.GetString(0); 
       LblEplShowTotalEmpl.Text = EplDr.GetInt32(1).ToString(); 
       LblEplShowCalEmpl.Text = EplDr.GetInt32(2).ToString(); 
       LblEplShowMichEmpl.Text = EplDr.GetInt32(3).ToString(); 
       LblEplShowNyEmpl.Text = EplDr.GetInt32(4).ToString(); 
       LblEplShowNjEmpl.Text = EplDr.GetInt32(5).ToString(); 
       LblEplShowPrimEx.Text = EplDr.GetInt32(6).ToString(); 
       LblEplShowLim.Text = EplDr.GetInt32(7).ToString(); 
       LblEplShowSir.Text = EplDr.GetInt32(8).ToString(); 
       LblEplShowPrem.Text = EplDr.GetInt32(9).ToString(); 
       LblEplShowWage.Text = EplDr.GetInt32(10).ToString(); 
       LblEplShowInvestCost.Text = EplDr.GetInt32(11).ToString(); 

      } 
     } 
      UdpEPL.Visible = false; 
      UdpEplShow.Visible = true; 


    } 
} 

回答

0

为了给这个问题一个答案,我必须指出我的错误。 @穆罕默德问我为什么面板设置为可见= false;这是因为我试图接近页面结构的方式。我想用ajax来显示输入表单,然后在提交给数据库时隐藏它们,并以只读格式显示数据,所以我想我会把这两个表单放在更新面板中,并使它们不可见,直到它们被调用下拉列表。不幸的是,我发现触发器不会触发看不见的控件。不要引用我的意思,但据我了解,这是因为无形的服务器端控件不会向浏览器发送标记。学过的知识。

4

在触发器中,您只需指定事件名称。

应该

<asp:AsyncPostBackTrigger ControlID="BtnEpl" EventName="Click" /> 

代替

<asp:AsyncPostBackTrigger ControlID="BtnEpl" EventName="BtnEpl_Click" /> 
+0

所以我不使用代码隐藏(BtnEpl_Click)中的实际事件处理程序名称?我应该只使用'点击'? – 2011-05-02 05:51:11

+0

耶,我们只需要使用事件名称而不是处理程序名称。只是尝试:) – 2011-05-02 05:52:08

+0

@Brazos:该属性被称为** EventName **。 – 2011-05-02 05:53:00

0

你终场前的ContentTemplate在某些时候?如果您在按钮标记后执行此操作,请启用ChildrenAsTriggers =“true”。