0

オブジェクトの複数のインスタンスを含むことができるクラスを作成しました。すべてのデータはセッションに保存されます。実行時までインスタンスの数はわかりません。この動的データを表示するための最良の方法は何ですか。コードビハインドでaspxを使用しているため、ロードサブで発生する必要があると思います。

それが役立つ場合、クラスは VB にありますが、C# での回答は問題ありません。

Imports System.Web.HttpContext

Public Class Student

    Public Property SchoolId As Integer
    Public Property Grade As Integer
    Public Property StudentName As String


    Public Sub AttachToSession(StudentToBeAdded As Student)

        Dim StudentList As New List(Of Student)

        If (Current.Session("student") Is Nothing) Then

            StudentList.Add(StudentToBeAdded)
            Current.Session("student") = StudentList

        Else

            StudentList = Current.Session("student")
            StudentList.Add(StudentToBeAdded)
            Current.Session("student") = StudentList

        End If

    End Sub

End Class
4

2 に答える 2

1

GridViewコントロールを使用して、学生の情報を表示できます

マークアップ

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True">
</asp:GridView>

あなたのコードで

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    If Not IsPostBack Then
        GridView1.DataSource = CType(Session("student"), List(Of Student))
        GridView1.DataBind()
    End If

 End Sub
于 2013-01-14T21:08:12.917 に答える
0

または、カスタムのルック アンド フィールが必要な場合は、(aspx ページで) 次のようなものを試すことができます。

<% For Each l_student As Student In CType( Session( "student" ), List(Of Student) ) %>
    <div>
        <p>Name: <%= l_student.StudentName %></p>
        <p>Grade: <%= l_student.Grade %></p>
    </div>
<% Next %>

これにより、生徒のコレクション内のアイテムごとに 1 つの 'div' 要素が作成されます。

参照: .NET Framework での ASP.NET インライン式の概要

ただし、学生クラスで共有プロパティを作成する方がよい場合があります。

Public Shared ReadOnly Property Students As List(Of Student)
    Get
        Dim l_studentList As List(Of Student) = TryCast( Current.Session("student"), List(Of Student) )
        If l_studentList Is Nothing Then
            l_studentList = New List(Of Student)
            Current.Session("student") = l_studentList
        End If

        Return l_studentList
    End Get
End Property

次に、あなたのaspxは次のようになります。

<% For Each l_student As Student In Student.Students %>
...
于 2013-01-14T21:16:39.970 に答える