updatepanel中带有计时器的按钮不起作用

时间:2017-04-12 14:11:40

标签: c# asp.net timer updatepanel

我有这个代码。当我点击任何按钮时不起作用。我希望所有按钮都运行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>

1 个答案:

答案 0 :(得分:0)

有点晚了,但到目前为止,我发现按钮不会触发,直到定时器的间隔完成但是如果你的间隔太低,那么间隔会在按钮被触发之前再次触发能够完全开火,从而使按钮点击无效。你的计时器每1/100秒滴答一次,这太快了。尝试增加到1秒(Interval =&#34; 1000&#34;)我想你会发现你的按钮有效。如果您将间隔增加得太远,例如10秒,您将单击按钮,似乎什么都不会发生,但大约10秒钟后命令将会触发。奇怪的行为,我仍然试图找到一个即时的解决方案,但这是我在过渡期间得到的。