2017-04-12 91 views
0

我有这段代码。当我点击任何按钮不起作用。我想要所有按钮都运行EventHandler(Button1_Click)。我试图使用多个AsyncPostBackTrigger,但随后计时器方法卡住了。带有定时器的updatepanel中的按钮不起作用

public DataTable data1 = new DataTable(); 
protected void Timer1_Tick(object sender, EventArgs e){ 
     MySqlConnection con = openconnection(); 
     MySqlDataAdapter sda1 = new MySqlDataAdapter("SELECT id FROM orderprogress WHERE Order=0;", con); 
     sda1.Fill(data1); 

     for (int i = 0; i < data1.Rows.Count; i++){ 
      TableRow row = new TableRow(); 
      TableCell cell1 = new TableCell(); 
      cell1.Text = data1.Rows[i][0].ToString(); 
      row.Cells.Add(cell1); 
      Table1.Rows.Add(row); 
      insertbuttons(i); 
      } 
} 
void insertbuttons(int i){ 
     Button btn = new Button(); 
     btn.ID = data1.Rows[i][0].ToString(); 
     btn.Text = "Apply!"; 
     btn.Click += new EventHandler(Button1_Click); 
     TableRow row1 = new TableRow(); 
     TableCell cell2 = new TableCell(); 
     row1.Cells.Add(cell2); 
     Table1.Rows[i].Cells[1].Controls.Add(btn); 
    } 
protected void Button1_Click(object sender, EventArgs e){ 
     orderidlb.Text = "button pressed"; 
    } 

这里的ASP代码,我用:晚期

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="10"></asp:Timer> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" AutoPostBack="True" UpdateMode="Conditional" ChildrenAsTriggers="true"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
    </Triggers> 
    <ContentTemplate> 
      <asp:Table ID="Table1" runat="server"> 
       <asp:TableRow> 
        <asp:TableCell>ID</asp:TableCell> 
        <asp:TableCell>test BTN!</asp:TableCell> 
       </asp:TableRow> 
      </asp:Table> 
     </ContentTemplate> 
</asp:UpdatePanel> 
+0

您是否在按钮上尝试过AutoPostBack =“true”? – Seano666

回答

0

有一点,但到目前为止,我发现,按钮不火,直到计时器的时间间隔已经完成,但如果你的间隔太低,那么间隔会在按钮能够完全触发之前再次触发,从而使按钮点击无效。你的计时器每隔1/100秒钟滴答一次,这太快了。尝试增加到1秒(间隔=“1000”),我想你会发现你的按钮的作品。如果你把时间间隔增加得太远了,比如10秒,你会点击按钮,看起来没有什么会发生,但是大约10秒后,命令将会触发。奇怪的行为,我仍然试图找到一个即时解决方案,但这是我在过渡期间得到的。