2017-04-12 2 views
0

Ich habe diesen Code. Wenn ich auf einen Button klicke funktioniert das nicht. Ich möchte alle Buttons EventHandler (Button1_Click) ausführen lassen. Ich hatte versucht, mehrere AsyncPostBackTrigger verwenden, aber dann Timer-Methode stecken.Buttons in Updatepanel mit Timer funktioniert nicht

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"; 
    } 

Hier wird der ASP-Code i verwendet:

<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

Haben Sie AutoPostBack = "true" auf Ihren Tasten versucht? – Seano666

Antwort

0

Ein wenig spät, aber bisher habe ich festgestellt, dass die Schaltfläche nicht ausgelöst, bis das Intervall auf dem Timer abgeschlossen, aber wenn Ihr Intervall ist zu niedrig, dann wird das Intervall erneut ausgelöst, bevor die Schaltfläche vollständig ausgelöst werden kann, wodurch das Klicken auf die Schaltfläche aufgehoben wird. Ihr Timer tickt alle 1/100 Sekunde, was zu schnell ist. Versuche, auf 1 Sekunde zu erhöhen (Intervall = "1000") und ich denke, du wirst feststellen, dass dein Knopf funktioniert. Wenn Sie das Intervall zu weit erhöhen, z. B. 10 Sekunden, klicken Sie auf die Schaltfläche und scheinbar wird nichts passieren, aber etwa 10 Sekunden später wird der Befehl ausgelöst. Seltsames Verhalten, ich versuche immer noch, eine sofortige Lösung zu finden, aber das ist es, was ich in der Zwischenzeit habe.

Verwandte Themen