2012-02-25 3 views
0

У меня проблема с gridview и checkbox в asp.net. Я связываю сетку на странице загрузки и добавления атрибутов с флажком в функции BindGrid():Проблема с checkbox в GridView

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

На странице 1 Я выбираю несколько строк. Перейдите на страницу 2, выберите другую строку. Как только я это сделаю, вся сетка просто исчезнет!

На отладку, я обнаружил, что grdSelect.Rows 0 в функции ReadGrid() ниже:

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. Также перед привязкой вам необходимо установить свойство индекса страницы вашего gridview следующим образом:

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

Надеюсь, что это поможет.

+0

Спасибо за ответ. Но добавление вышеуказанного события не помогает. Это событие не стреляет. Это может быть потому, что мы внедрили пользовательское событие btnPagerClick. Любые другие указатели? –

+0

Любые другие предложения, пожалуйста, кто угодно? –

Смежные вопросы