我有一個GridView,它不斷地使用計時器反彈,並在一個updatePanel內,因此頁面不會持續刷新(每一行都有一個倒計時序列,因此GridView需要不斷地刷新得到更新)asp.ImageButton GridView中的OnClick函數在一個updatePanel內
在gridview裏面我有一個帶有OnClick方法的imagebutton。以前爲了讓OnClick方法觸發,我會確保gridView不在UpdatePanel中,並且gridview的pageload數據綁定位於「If Not IsPostBack」中。
隨着計時器,雖然我不能有一個「如果不IsPostBack」GridView綁定,它需要在一個UpdatePanel。
有沒有辦法使用UpdatePanel和「如果不是IsPostBack」,仍然可以調用OnClick方法?
感謝
下面是一些代碼,如果我的解釋沒有做出完整意義上的:
的UpdatePanel /定時器/ GridView的
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Timer ID="timerCountDown" runat="server" Interval="1000" OnTick="timerCountDown_Tick"></asp:Timer>
<asp:GridView ID="gridBuildQueue" runat="server" AutoGenerateColumns="False"
GridLines="none" ShowFooter="false" ShowHeader="false" Width="100%">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat="server" ID="cmdCancelBuild" ImageUrl="~/images/cancel.jpg" OnClick="ImageButton_Click"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
OnTick計時器方法:
Protected Sub timerCountdown_Tick(ByVal sender As Object, ByVal e As EventArgs)
Me.gridBuildQueue.DataBind()
End Sub
ImageButton_Click方法(目前從未調用過):
Protected Sub ImageButton_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
Dim imageButton As ImageButton = CType(sender, ImageButton)
Dim row As GridViewRow = CType(imageButton.NamingContainer, GridViewRow)
Dim button As ImageButton = DirectCast(row.FindControl("cmdCancelBuild"), ImageButton)
etc...
End Sub
好吧,我只是改變使用rowCommand代替的OnClick,但同樣的事情發生,gridBuildQueue_RowCommand方法永遠不會被調用。 updatePanel會干擾這個嗎?感謝您的幫助 – jdtaylor
@jdtaylor - 您需要設置更新面板的「觸發器」集合。 – adatapost
謝謝,我已經添加了觸發器,並允許rowCommand現在被調用,但因爲我沒有一個「如果不是IsPostBack」圍繞我的GridView的第一個DataBind()我收到一個無效的回發/回調錯誤(錯誤在下面複製)。如果我添加「如果不是IsPostBack」,那麼錯誤頁面不會出現,但gridview永遠不會被定時器反彈。有任何想法嗎?謝謝! – jdtaylor