【问题标题】:Assigning an array to a gridview asp.net将数组分配给gridview asp.net
【发布时间】:2014-10-03 17:53:30
【问题描述】:

在尝试将数组分配给 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

【问题讨论】:

    标签: asp.net vb.net gridview


    【解决方案1】:

    您在每次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()
    

    【讨论】:

    • 它在 itemsArray 上给了我一个错误。编译器错误消息:BC32045:“iTextSharp.text.List”没有类型参数,因此不能有类型参数。
    • 如您所见,它正在尝试创建一个iTextSharp.Text.List 我正在使用泛型>列表
    • 啊,好吧,我明白了……我编辑了我的编码,当我把它切换到你的时,gridview 消失了
    • 这毫无意义,您必须检查其余的工作才能发现 - 我的代码中没有任何东西可以做到这一点。
    • @Sash,请确保您的数据是持久的,因为这是一个 ASP 应用程序。你的数据也依赖于queryString,所以也要检查一下。
    【解决方案2】:
       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
    

    【讨论】:

    • 你拿了我的例子并用它来制作一个自我回答的解决方案,这是不好的选择 - 糟糕的选择
    • 我尝试使用您的方式,但它不起作用,gridview 根本没有显示数据。我确实在评论下方说谢谢……很抱歉你生我的气,我仍然感谢你的帮助。如果没有你的回答,我可能需要一段时间才能得到它。但是我会补充说欺凌不是很好!我希望这个问题有一天会对其他人有所帮助。
    • 没有欺凌,我是在告诉你,当你接受代码并建议只做你自己的解决方案时——那是低俗的。我没有生气,只是对你的行为感到失望。
    • 您是否希望我在您的答案旁边打勾,即使它对我不起作用?它并没有完全起作用,我发布了有效的方法。您希望我删除对我也有效的解决方案吗?
    猜你喜欢
    • 2018-03-27
    • 2012-07-12
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多