2014-04-04 63 views
0

我有問題讓我的PageIndexChanging事件觸發。 ViewState關閉,我有一個動態數據源,我在每次回發PageInit事件時加載。Gridview PageIndexChanging事件不與ViewState關閉和動態數據源發射

<asp:GridView runat="server" 
         ID="gvBenefitsList" 
         AllowPaging="true" 
         > 
       ..... 
       <PagerSettings Mode="NumericFirstLast" FirstPageText="<< First" LastPageText="Last >>" 
       PageButtonCount="5" Position="Bottom" /> 
     </asp:GridView> 

指數變化事件

Protected Sub gvBenefitsList_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvBenefitsList.PageIndexChanging 
     gvBenefitsList.PageIndex = e.NewPageIndex 
     gvBenefitsList.DataSource = Data 
     gvBenefitsList.DataBind() 
    End Sub 

我每次都重新綁定網格,我們的視圖狀態關閉。

Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
     Data = getdata() 
     gvBenefitsList.DataSource = Data 
     gvBenefitsList.DataBind() 
    End Sub 

哦,數據是一個DataSet屬性

Dim m_Data As DataSet 
    Public Property Data As DataSet 
     Get 
      Return m_Data 
     End Get 
     Set(value As DataSet) 
      m_Data = value 
     End Set 
    End Property 

所以點擊2頁Init事件觸發時,並結合電網,但該指數變化事件永遠不會被解僱。我已經厭倦了在初始事件中以編程方式附加處理程序

AddHandler gvBenefitsList.PageIndexChanging, AddressOf gvBenefitsList_PageIndexChanging 

但這並沒有什麼區別。我不確定爲什麼這不起作用rowCommand事件工作正常。這是Viewstate關閉的母版頁的一部分,我們儘可能將隱藏的Viewstate變量設置爲空字符串以減小頁面大小。

<input type="hidden" name="__EVENTTARGET" value="" /> 

任何想法將受到歡迎。

回答

0

所以我好像找到了罪魁禍首。由於母版頁說明我們正在

<input type="hidden" name="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" value="" /> 

取出值這似乎導致某些JavaScript的回發事件的問題。我在這裏找到一篇非常好的文章,說明他們做了什麼。

http://aspalliance.com/895_Understanding_the_JavaScript___doPostBack_Function.all

這兩個隱藏字段控制該做JavaScript___doPostBack呼叫,但不影響正常的按鈕或圖像按鈕,因爲他們做一個適當的回發到服務器的任何了LinkBut​​ton。

檢查後我可以看到,點擊頁面鏈接時的值是:

__EVENTARGUMENT - Page$2 

__EVENTTARGET - ctl00$MasterContent$gvBenefitsList 

即使視圖狀態關閉這些領域仍用於這些事件。

希望這可以幫助別人。我一直在掙扎一段時間!

相關問題