在尝试将数组分配给gridview的数据源时,我无法获取每行的信息。它只显示最后一行并重复它。
数组中的信息来自文本文件
Sub BindGridview()
If Request.QueryString("show") <> "" Then
Dim readEmailList As StreamReader = New StreamReader("d:\netdrvs\prs\emaillist\" & Request.QueryString("show"), FileMode.Open)
While Not readEmailList.EndOfStream
Dim readData(3) As String
readData = Split(readEmailList.ReadLine(), vbTab)
Dim readData2(3) As String
readData2 = Split(readData(0), "_")
Dim dt As New System.Data.DataTable()
dt.Columns.Add("ccode", Type.GetType("System.String"))
dt.Columns.Add("email", Type.GetType("System.String"))
dt.Columns.Add("invnum", Type.GetType("System.String"))
dt.Columns.Add("regards", Type.GetType("System.String"))
dim i as integer = 0
For i = LBound(readData) to UBound(readData)
dt.Rows.Add()
'dt.Rows(dt.Rows.Count - 1)("ccode") = arrMultiD(i, 0)
dt.Rows(dt.Rows.Count - 1)("ccode") = readData2(1)
dt.Rows(dt.Rows.Count - 1)("email") = readData(1)
dt.Rows(dt.Rows.Count - 1)("invnum") = readData2(0)
dt.Rows(dt.Rows.Count - 1)("regards") = readData(2)
Next
gvarray.DataSource = dt
gvarray.DataBind()
End While
readEmailList.Close()
ProcessChk.Visible = True
End If
End Sub
答案 0 :(得分:0)
你正在每次While
次迭代中创建DataTable,这是错误的,把它放在While上面,所以只有一个。然后提取数据。
Dim dt As New DataTable
dt.Columns.Add("ccode", Type.GetType("System.String"))
dt.Columns.Add("email", Type.GetType("System.String"))
dt.Columns.Add("invnum", Type.GetType("System.String"))
dt.Columns.Add("regards", Type.GetType("System.String"))
While Not readEmailList.EndOfStream
Dim itemsArray As New System.Collections.Generic.List(Of Object)
Dim readData(3) As String
readData = Split(readEmailList.ReadLine(), vbTab)
Dim readData2(3) As String
readData2 = Split(readData(0), "_")
itemsArray.Add(readData2(1))
itemsArray.Add(readData(1))
itemsArray.Add(readData2(0))
itemsArray.Add(readData2(1))
Dim row = dt.NewRow()
row.ItemArray() = itemsArray.ToArray()
End While
gvarray.DataSource = dt
gvarray.DataBind()
答案 1 :(得分:-1)
If Request.QueryString("show") <> "" Then
Dim readEmailList As StreamReader = New StreamReader("d:\netdrvs\prs\emaillist\" & Request.QueryString("show"), FileMode.Open)
Dim dt As New System.Data.DataTable()
dt.Columns.Add("ccode", Type.GetType("System.String"))
dt.Columns.Add("email", Type.GetType("System.String"))
dt.Columns.Add("invnum", Type.GetType("System.String"))
dt.Columns.Add("regards", Type.GetType("System.String"))
While Not readEmailList.EndOfStream
Dim readData(3) As String
readData = Split(readEmailList.ReadLine(), vbTab)
Dim readData2(3) As String
readData2 = Split(readData(0), "_")
dt.Rows.Add()
dt.Rows(dt.Rows.Count - 1)("ccode") = readData2(1)
dt.Rows(dt.Rows.Count - 1)("email") = readData(1)
dt.Rows(dt.Rows.Count - 1)("invnum") = readData2(0)
dt.Rows(dt.Rows.Count - 1)("regards") = readData(2)
End While
gvarray.DataSource = dt
gvarray.DataBind()
readEmailList.Close()
ProcessFile.Visible = true
End If