【问题标题】:GridView Reader returns repeating values ASP.NETGridView 阅读器返回重复值 ASP.NET
【发布时间】:2014-05-27 05:46:11
【问题描述】:

我正在尝试创建一个数据表,其中包含我从 GridView 列中读取的项目。 我正在阅读的 GridView 如下所示:

 SELECT      COURSE       NAME

 Select      Course_1     USER_1
 Select      Course_2     USER_2
 Select      Course_3     USER_3

这是我的代码:

Dim dt As New DataTable()
Dim dtcopy As New Datatable()

dt.Columns.Add("File",GetType(String))

For Each row As GridViewRow In GV_PDBC.Rows
            For i As Integer = 1 To GV_PDBC.Rows.Count - 1
                strname = row.Cells(2).Text
                 dt.Rows.Add(strname)

                 dtcopy.Merge(dt, True, MissingSchemaAction.AddWithKey)
           Next
        Next

它正在重复阅读该列。这是数据表结果:

 USER_1
 USER_1
 USER_1
 USER_1
 USER_1
 USER_1
 USER_1
 USER_2
 USER_2
 ...

我想我只是错过了一些东西。请帮忙。提前致谢

【问题讨论】:

  • 我不明白您为什么要使用“For i As Integer = 1 To GV_PDBC.Rows.Count - 1”循环,因为您已经在使用 Foreach 循环了
  • 与 dtcopy 有什么关系?

标签: asp.net vb.net gridview datatable


【解决方案1】:

为此编写代码的正确方法:

Dim dt As New DataTable()
Dim dtcopy As New Datatable()

dt.Columns.Add("File",GetType(String))

'This loop will iterate all gridview rows
For Each row As GridViewRow In GV_PDBC.Rows 

    'Determine the row type.
    if row.RowType = DataControlRowType.DataRow Then
        strname = row.Cells(2).Text
        dt.Rows.Add(strname)
    End If
Next

【讨论】:

  • 谢谢!这很有帮助。我还删除了 dtcopy.Merge(dt..) 并得到了我需要的东西。谢谢
【解决方案2】:

重复值是由于第二个循环的bcz,

For i As Integer = 1 To GV_PDBC.Rows.Count - 1

Next

你需要删除for循环,结果将是

USER_1

USER_2

USER_3

代码将是:

    Dim dt As New DataTable()
    Dim dtcopy As New DataTable()
    dt.Columns.Add("File", GetType(String))
    For Each row As GridViewRow In GV_PDBC.Rows
        strname = row.Cells(2).Text
        dt.Rows.Add(strname)
        dtcopy.Merge(dt, True, MissingSchemaAction.AddWithKey)
    Next

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多