【发布时间】:2016-07-26 18:09:53
【问题描述】:
我有 940000 行的大型 DataGridView...哎呀,通过解析 csv 文件填充,DataGridView 有一个名为 Sequence 的列,编号为 1 到 940000。我试图做的是重新编号要溢出的序列DataGridView 中的行数为 1 到 7000 的序列。重新排序序列列的最有效方法是什么?
Using reader As New Microsoft.VisualBasic.FileIO.TextFieldParser(fileName)
reader.TextFieldType = FileIO.FieldType.Delimited
reader.SetDelimiters(",")
Dim currentRow As String()
Dim serial As String
Dim sequence As Integer = 0
Dim RollId As String
'pbUploadFile.Maximum = serialAmmount / quantityBreak
pbUploadFile.Maximum = serialAmmount
pbUploadFile.Step = 1
pbUploadFile.Value = 0
For i = 1 To serialAmmount / quantityBreak
For j = 1 To quantityBreak
Try
currentRow = reader.ReadFields()
serial = currentRow(0).ToString
sequence += 1
EnterDataIntoDatabase(serial, sequence, nextRollNumber, ddSelectPartNumber.Text)
pbUploadFile.Increment(1)
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Code " & ex.Message & "is not valid and will be skipped check csv file")
End Try
Next j
sqlCmd = New SqlClient.SqlCommand("SELECT * FROM serials WHERE Sequence=@sequence AND RollNo=@rollNo ", sqlCon)
sqlCmd.CommandType = CommandType.Text
sqlCmd.Parameters.AddWithValue("@sequence", 1)
sqlCmd.Parameters.AddWithValue("@rollNo", nextRollNumber)
sqlCon.Open()
Dim readRollId As SqlClient.SqlDataReader = sqlCmd.ExecuteReader()
If readRollId.Read() Then
RollId = readRollId.Item("Code")
End If
sqlCon.Close()
UpdateAvailableRolls(ddSelectPartNumber.Text, nextRollNumber, RollId)
nextRollNumber += 1
UpdateRollNo(nextRollNumber)
sequence = 0
'pbUploadFile.Increment(1)
Next i
SaveFile()
End Using
【问题讨论】:
-
有效的方法是将数据存储在列表或数据表中,然后使用数据而不是用户的视图。您是否在填充时设置了序列?你可以在加载数据时这样做吗? (标题与其余部分不匹配)。
-
嗨 Plutonix 序列来自 csv 文件,该文件有两列序列号和序列号从 1 到 940000。我试图分解为 1 到 7000。我与 DataGridView 一起使用所以我可以更容易地直观地看到我在做什么。
-
使用数据容器不会阻止在表单上显示数据。文件中包含字符串以外的数据的可能性是 6-5-pickem,但直接填充 DGV,您最终会得到所有字符串。当您遍历文件时,您可以计算行数并根据需要将序列重置为 1。你知道你最终会得到 130 多行具有相同序列号的行吗?
-
感谢 Plutonix,是的,相同的序列号是我想要的行为,我正在尝试将这些 1-940000 序列号分类为编号为 1-7000 的批次。我以前从未处理过如此大的文件。
-
数据的最终目的地是什么?意思是在它被排序/批处理之后会发生什么,也许用户批准了它?它是发送到数据库、返回 CSV 还是什么?
标签: .net vb.net datagridview