I'm trying to create a session where I store the values of a certain column. So I created this list to display the value if selected but I'm getting this in the other page System.Collections.Generic.List`1[System. String] instead of the actual values.
This is the first page's code:
Private Sub BindGrid()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("dbconnection").ConnectionString)
con.Open()
Dim cmd As New SqlCommand("select distinct Name,assignment_id, Description ,cod from assignments
INNER Join crmsLecturerXCrsSection ON crmsLecturerXCrsSection.emp_key = assignments.emp_key
INNER Join CRMSStudentsXCrsSection ON CRMSStudentsXCrsSection.CrsSec_id = crmsLecturerXCrsSection.CrsSec_id
INNER JOIN CRMS_CourseXSection ON CRMS_CourseXSection.CrsSec_id = CRMSStudentsXCrsSection.CrsSec_id
INNER JOIN CRMSECTIONS ON CRMSECTIONS.SEC_ID = CRMS_CourseXSection.SEC_ID
left JOIN crmscourses ON crmscourses.crs_id = CRMS_CourseXSection.crs_id
INNER JOIN CRMS_CourseXSection cs ON CRMS_CourseXSection.SEC_ID = CRMSECTIONS.SEC_ID
INNER JOIN CRMSSEMESTER ON CRMSSEMESTER.SEM_ID = CRMS_CourseXSection.SEM_ID
where CRMSSEMESTER.SEM_ID='1'
and crmsLecturerXCrsSection.emp_key='436' and crmscourses.crs_desc='" Session("crs") "'", con)
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
da.Fill(dt)
Dim listIDs As New List(Of String)
Dim row As DataRow
For Each row In dt.Rows
listIDs.Add(row("assignment_id"))
Next
Session("assid") = listIDs
cmd.Connection = con
GridView1.DataSource = cmd.ExecuteReader()
GridView1.DataBind()
End Sub
This is the second page:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label1.Text = Session("assid").ToString()
Dim con1 As New SqlConnection(ConfigurationManager.ConnectionStrings("dbconnection").ConnectionString)
Dim cmd1 As New SqlCommand("select * from assignments where assignment_id ='" String.Join(",", Session("assid")) "'", con1)
End Sub
CodePudding user response:
You put a List(Of String)
into Session("assid")
so that's what you get out. If you call ToString
on that, you'll get the type name, which is exactly what you're seeing, i.e. "System.Collections.Generic.List
1[System.String]"`. Just as always, if you want to see the items in the list then you'll need to get the items out first. Exactly how you do that depends on exactly what you want to do with those items. If, for instance, you just wanted to show the items in a comma-delimited list, you could do this:
Dim ids = DirectCast(Session("assid"), List(Of String))
Label1.Text = String.Join(", ", ids)