2012-02-25 11 views
0

asp.netのgridviewとcheckboxに問題があります。ページのロード時にグリッドをバインドし、BindGrid()関数のチェックボックスに属性を追加します。GridViewのチェックボックスの問題

chkSelection.Attributes.Add("onclick", "AbortPostBack(); __doPostBack('" + chkSelection.UniqueID + "','');") 
AddHandler chkSelection.CheckedChanged, AddressOf ChkSelector_CheckedChanged 

ページ1では、いくつかの行を選択します。私はページ2に移動し、別の行を選択します。すぐにグリッド全体が消える!デバッグの

、私はgrdSelect.Rowsは以下ReadGrid()関数では0であることが判明:

in Page_Load 

If Not Page.IsPostBack Then 
    BuildData() 
    BindGrid() 
    RenumberPager() 
    Dim ctlControl As UserControl = PageUtility.SearchControl(Page.Master, "ctlLeadsCount") 
    CType(ctlControl, leadscount).Count = m_SelectedRecords.Count 
Else    
    ReadGrid() 
End If 

in ReadGrid 

For Each row As GridViewRow In grdSelect.Rows 
    Dim chkSelection As CheckBox = CType(row.FindControl("ChkSelector"), CheckBox) 
    If Not chkSelection Is Nothing Then 
     Dim recNumK As DataKey = CType(grdSelect.DataKeys(row.RowIndex), DataKey) 
     Dim recNum As String = recNumK.Value.ToString() 
     m_SelectedRecords.Remove(recNum) 

     If chkSelection.Checked = True Then 
      For Each rec As Record In m_data 
       If rec(BusinessFieldNames.UniqueId) = recNum Then 
        m_SelectedRecords(recNum) = rec(BusinessFieldNames.UniqueId) 
        Exit For 
       End If 
      Next 
     End If 
    End If 
Next 

ViewState("Cherry") = m_SelectedRecords 

任意の提案/ポインタは本当にいただければ幸いです。

+0

グリッドを動的に作成していますか、それともaspxページで宣言していますか? – Dante

+0

aspxページで宣言されています。 –

答えて

0

gridView_PageIndexChangingイベントでデータを再バインドする必要があります。バインドする前に、グリッドビューのページインデックスプロパティを次のように設定する必要があります。

 Protected Sub grdSelect_PageIndexChanging(...) Handles grdSelect.PageIndexChanging 
    grdSelect.PageIndex = e.NewPageIndex 
    BuildData() 
    BindGrid() 
end sub 

希望すると助かります。

+0

返信いただきありがとうございます。しかし、上記のイベントを追加することは役に立ちません。このイベントは発生していません。これは、カスタムbtnPagerClickイベントを実装したためです。他のポインタ? –

+0

他の提案はどうぞ、誰ですか? –