0

好吧,所以我有这种结构:

Structure wspArtikel
    Dim gID As Guid()
    Dim sText As String
    ... more fields like this
End Structure

而且我还有一个带有列的 HTML 表IDText; 还有一个包含复选框的附加列。
现在我想(在 a 上button.Click-Event)遍历选中复选框的表中的所有项目并将它们保存到我的结构中。

我尝试了什么:

Dim wstruc As New wspArtikel
For Each gRow As GridViewRow In gvArtikel.Rows
    Dim chkArtikel As CheckBox = DirectCast(gRow.FindControl("checkbox"), CheckBox)
    If chkArtikel.Checked Then
        wstruc.gID = New Guid(DirectCast(gRow.FindControl("gID"), HiddenField).Value)
    End If
Next

如果只选择一项,则效果很好。
正如您可能已经看到的,如果选择了两个项目,那么它将覆盖第一个项目,并且只有一个项目将保存在我的结构中。

如何收集结构中每个已检查项目的所有数据?

4

1 回答 1

1

我不喜欢使用 Structs。有时使用其他结构(如 DataTable)更容易。

暗示:

要保存不同出现的结构,您需要使用 LIST 结构(或它的某些变体)。下面是使用结构列表的示例。列表中的每个项目都可以通过索引访问。下面我演示添加 1 个项目(在列表中出现 1 个结构):

 Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text

    Namespace ConsoleApplication1021
        Class Program

            Private Structure wspArtikel
                Public gID As Guid()
                Public sText As String
                '... more fields like this
            End Structure

            Private Shared Sub Main(args As String())

                'Define list 
                Dim structList As New List(Of wspArtikel)()

                'Create list object
                Dim artListVar = New wspArtikel()

                'Define array of 2 items - This is an example, you need to set the correct value
                artListVar.gID = New Guid(1) {}

                'Assign value to array of 1st occurrence in the list
                artListVar.gID(0) = Guid.NewGuid()
                artListVar.gID(1) = Guid.NewGuid()


                'Assign value to string in 1st occurrence in the list
                artListVar.sText = "String-0"

                structList.Add(artListVar)

                      'Display items in list
                       For Each itm As var In structList
                            Console.WriteLine((artListVar.gID(0).ToString() & " ") + artListVar.sText)
                       Next

                Console.WriteLine("Done")
            End Sub
        End Class
    End Namespace
于 2013-11-06T11:30:56.280 回答