0

さて、私はこの種の構造を持っています:

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

IDまた、列とText;を含むHTML テーブルもあります。チェックボックスを含む追加の列。ここで、チェックボックスがオンになっているテーブル内のすべての項目を
(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

アイテムが1つだけ選択されている場合、これはうまく機能します。
すでにおわかりのように、2 つの項目が選択されている場合、最初の項目が上書きされ、1 つの項目だけが私の構造に保持されます。

構造内のチェックされた各アイテムのすべてのデータを収集するにはどうすればよいですか?

4

1 に答える 1

1

私は構造体を使うのが好きではありません。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 に答える