2014-10-03 26 views
-2

當試圖分配一個數組到gridview的數據源時,我無法獲取每一行的信息。它只顯示最後一行並重復它。分配一個數組到一個gridview asp.net

在數組中的信息是從一個文本文件

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 

回答

-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 
+0

你拿我的例子,並用它來作出自我回答的解決方案,這是不好的味道 - 糟糕的選擇 – OneFineDay 2014-10-06 15:29:38

+0

我試着用你的方式,它沒有工作的GridView沒有顯示數據。我在評論下面說了聲謝謝......我很抱歉你對我生氣,我仍然感謝你的幫助。沒有你的答案,它可能會花費我一段時間才能得到它。不過我會加欺負不好!我希望這個問題有一天會幫助別人。 – Sash 2014-10-06 15:49:54

+0

有沒有bulling,我告訴你,當你採取代碼,並建議只是爲了讓自己的解決方案 - 這是在糟糕的口味。我沒有生氣,只是對你的行爲感到失望。 – OneFineDay 2014-10-06 16:12:54

0

你正在數據表中的每個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() 
+0

它給我上itemsArray錯誤。編譯器錯誤消息:BC32045:'iTextSharp.text.List'沒有類型參數,因此不能有類型參數。 – Sash 2014-10-03 18:12:54

+1

正如你可以看到它試圖使一個'iTextSharp.Text.List'我在哪裏使用泛型>列表 – OneFineDay 2014-10-03 18:15:58

+0

啊好吧,我看到它...我編輯了我的編碼,當我切換到你的gridview消失 – Sash 2014-10-03 18:27:18