我有这个代码。当我点击任何按钮时不起作用。我希望所有按钮都运行EventHandler(Button1_Click)。我曾尝试使用多个AsyncPostBackTrigger,但随后计时器方法停滞不前。
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 :(得分:0)
有点晚了,但到目前为止,我发现按钮不会触发,直到定时器的间隔完成但是如果你的间隔太低,那么间隔会在按钮被触发之前再次触发能够完全开火,从而使按钮点击无效。你的计时器每1/100秒滴答一次,这太快了。尝试增加到1秒(Interval =&#34; 1000&#34;)我想你会发现你的按钮有效。如果您将间隔增加得太远,例如10秒,您将单击按钮,似乎什么都不会发生,但大约10秒钟后命令将会触发。奇怪的行为,我仍然试图找到一个即时的解决方案,但这是我在过渡期间得到的。