Hi, I'm trying to cache user's input avail through gridview paging. I receive error System.NullReferenceException was unhandled by user code
Message="Object reference not set to an instance of an object." Any thought is appreciated. Thank you in advance.
When I walked through CacheData, it seems to cache the data just fine. However, sd is empty.
Here's my GridView Paging:Code:Private Sub CacheData() Dim row As GridViewRow Dim sd1 As New StringDictionary Dim count As Integer = 0 For Each row In GridView1.Rows Dim txtRoomNum As TextBox = CType(row.FindControl("RoomNumber"), TextBox) Dim lblID As Label = CType(row.FindControl("RetreatantID"), Label) 'a way to identify the row, I use primary key. This would be a template column sd1.Add(lblID.Text, txtRoomNum.Text) Next Dim index As String = GridView1.PageIndex Cache.Insert("cachedRMAssignValues" & index, sd1) End Sub Private Sub setCachedEdit() Dim sd As StringDictionary = Cache.Get("cachedRMAssignValues" & GridView1.PageIndex) Dim de As New DictionaryEntry Dim r As GridViewRow If sd.Count > 0 Then For Each de In sd For Each r In GridView1.Rows Dim txtRoomNum As TextBox = CType(r.FindControl("RoomNumber"), TextBox) Dim lblID As Label = CType(r.FindControl("RetreatantID"), Label) Dim index As String = GridView1.PageIndex If lblID.Text = de.Key Then txtRoomNum.Text = de.Value End If Next Next End If End Sub
Code:Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Dim rpData As New clsACData Dim groupID As String = Session("groupID") If GridView1.EditIndex <> -1 Then e.Cancel = True End If If (dlSearchOptions.SelectedValue = "recruiter name" Or dlSearchOptions.SelectedValue = "retreatant name" Or dlSearchOptions.SelectedValue = "retreatant not assigned a room" Or dlSearchOptions.SelectedValue = "special needs") Then CacheData() GridView1.PageIndex = e.NewPageIndex GridView1.DataSource = SortDataTable(rpData.RetreatantsForRMAssign(getSearchOptions(), getInput(), groupID), True) GridView1.DataBind() setCachedEdit() ElseIf (dlSearchOptions.SelectedValue = "registration status") Then CacheData() GridView1.DataSource = SortDataTable(rpData.RetreatantsForRMAssign(getSearchOptions(), getRegStatus(), groupID), True) GridView1.PageIndex = e.NewPageIndex GridView1.DataBind() setCachedEdit() ElseIf (dlSearchOptions.SelectedValue = "building") Then CacheData() GridView1.DataSource = SortDataTable(rpData.RetreatantsForRMAssign(getSearchOptions(), getRegBuilding(), groupID), True) GridView1.PageIndex = e.NewPageIndex GridView1.DataBind() setCachedEdit() End If




Reply With Quote