refresh data grid causes error if oper scrolled to right and selected a cell

Feb 21, 2005
Programming Experience
I have a datagrid that is populated with data. If the operator scrolls off to the click on a field that is off to the right (not initially displayed on the grid) ---- then the operator does something that needs to repopulate that data with a different set of information --- an error is generated. The new data consists of the same fields, but just it is just pulling in a different set of data. If the operator does not scroll off to the side of the grid but refreshes the grid with new information, the error does not occur. If the operator scrolls off to the right, but does not click on a cell, an error does not occur. I have included the code that binds data to the grid and displays it. I've narrowed down that it is stopping on the "dgtabhistory.DataSource = mydataview " statement where I bind the data to the view. The error says: "An unhandled exception of type 'System.ArgumentException' occurred in
Additional information: Column 'Strategy ID and Desc' does not belong to table ACTIVITYHISTORYGRID." The column name may change --- it kind of depends on how far over to the right I scroll on the grid and which cell I click on.

Does anyone know about a possible bug with Or am I missing something?? Is there a special command(s) I need to do before I bind new data to a datagrid?

	Dim sqlConn4 As SqlConnection = New SqlConnection(Connection)
				Dim sqlcomm4 As New SqlDataAdapter("salesRaptor_GetActivityHistoryPC", sqlConn4)
				sqlcomm4.SelectCommand.CommandType = CommandType.StoredProcedure
				Dim workParam4 As SqlParameter = New SqlParameter
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@Rep", SqlDbType.VarChar, 25)
				If chkTabHistoryWholeTeam.CheckState = CheckState.Checked Then
					sqlcomm4.SelectCommand.Parameters("@Rep").Value = Rep_ID
					sqlcomm4.SelectCommand.Parameters("@Rep").Value = txTabHistoryRepID.Text
				End If
				workParam4.Direction = ParameterDirection.Input
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@Status", SqlDbType.VarChar, 25)
				Dim type As String
				type = ""
				If cmbTabHistoryStatus.SelectedItem = "All Closed Statuses" Then type = ""
				If cmbTabHistoryStatus.SelectedItem = "Emailed Status Only" Then type = "E"
				If cmbTabHistoryStatus.SelectedItem = "Attempted Status Only" Then type = "A"
				If cmbTabHistoryStatus.SelectedItem = "Completed Status Only" Then type = "C"
				sqlcomm4.SelectCommand.Parameters("@Status").Value = type.ToString
				workParam4.Direction = ParameterDirection.Input
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@ProspectID", SqlDbType.VarChar, 25)
				sqlcomm4.SelectCommand.Parameters("@ProspectID").Value = Prospid.ToString
				workParam4.Direction = ParameterDirection.Input
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@contactID", SqlDbType.VarChar, 25)
				If tabhistproscontsw = "CONTACT" Then
					sqlcomm4.SelectCommand.Parameters("@contactid").Value = ActContid.ToString
					sqlcomm4.SelectCommand.Parameters("@contactid").Value = ""
				End If
				workParam4.Direction = ParameterDirection.Input
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@wholeteam", SqlDbType.VarChar, 1)
				If chkTabHistoryWholeTeam.Checked = True Then
					sqlcomm4.SelectCommand.Parameters("@wholeteam").Value = "Y"
					sqlcomm4.SelectCommand.Parameters("@wholeteam").Value = "N"
				End If
				workParam4.Direction = ParameterDirection.Input
				workParam4 = sqlcomm4.SelectCommand.Parameters.Add("@allreps", SqlDbType.VarChar, 1)
				If chkTabHistoryAllReps.CheckState = CheckState.Checked Then
					sqlcomm4.SelectCommand.Parameters("@allreps").Value = "Y"
					sqlcomm4.SelectCommand.Parameters("@allreps").Value = "N"
				End If
				workParam4.Direction = ParameterDirection.Input
				Dim ds As New DataSet
				sqlcomm4.Fill(ds, "ACTIVITYHISTORYGRID")	 'holds data from query
				'ds.Tables(0).Columns(16).ColumnMapping = MappingType.Hidden ' hide the record status field
				Dim x = ds.Tables(0).Rows.Count()
				Dim mydatatable As DataTable = ds.Tables(0) 'table name
				Dim mydataview As DataView = mydatatable.DefaultView
				' mydataview.Sort = "Date Closed" 'sort table
				dgtabhistory.DataSource = mydataview 'binds data to grid
				Dim ts1 As New DataGridTableStyle ' change column widths
				ts1.MappingName = "ACTIVITYHISTORYGRID"
				Dim numRows As Integer = dgtabhistory.BindingContext(dgtabhistory.DataSource, dgtabhistory.DataMember).Count
				txRecCountHistory.Text = "Count: " + CStr(numRows.ToString)
				If (dgtabhistory.CurrentRowIndex < numRows) And (dgtabhistory.CurrentRowIndex > -1) Then
					ContactHistoryActivityID = CStr(dgtabhistory(dgtabhistory.CurrentRowIndex, 13).ToString) 'store current activity id
				End If
				Try			 ' put inside a try because 2nd time through, it errors out
					ts1.GridColumnStyles(0).Width = 120 ' change width of date/time fld
					ts1.GridColumnStyles(1).Width = 150 ' change width of contact name
					ts1.GridColumnStyles(2).Width = 120 ' change width of status
					ts1.GridColumnStyles(3).Width = 120 ' change width of type
					ts1.GridColumnStyles(4).Width = 200 ' change width of regarding
					ts1.GridColumnStyles(5).Width = 200 ' change width of results
					ts1.GridColumnStyles(6).Width = 50 ' change width of priority
					ts1.GridColumnStyles(7).Width = 100 ' change width of rep
					ts1.GridColumnStyles(8).Width = 100 ' change width of personal business
					ts1.GridColumnStyles(9).Width = 150 ' change width of strategy id/des
					ts1.GridColumnStyles(10).Width = 90 ' change width of strategy level
					ts1.GridColumnStyles(11).Width = 75 ' change width of order id
					ts1.GridColumnStyles(12).Width = 75 ' change width of prospect id
					ts1.GridColumnStyles(13).Width = 75 ' change width of activity id
					ts1.GridColumnStyles(14).Width = 75 ' change width of contact id
					ts1.GridColumnStyles(15).Width = 150 ' change width of name
					ts1.GridColumnStyles(16).Width = 75 ' change width of new prospect
					' date datetime fields to show time	
					Dim dgtbc As DataGridTextBoxColumn
					dgtbc = CType(dgtabhistory.TableStyles(0).GridColumnStyles(0), DataGridTextBoxColumn)
					If Not dgtbc Is Nothing Then dgtbc.Format = "g"
				End Try
			Catch tt As Exception
				Errmsg = tt.ToString
				EventSW = "Y"
				errormsg() ' display error msg
			End Try
Top Bottom