2017-04-12 45 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秒後,命令將會觸發。奇怪的行爲,我仍然試圖找到一個即時解決方案,但這是我在過渡期間得到的。