[SOLVED] asp.net: why am I getting System.Collections.Generic.List`1[System. String] when I try to print values from a list in an asp.net grid view?

Issue

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

Solution

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)

Answered By – user18387401

Answer Checked By – Gilberto Lyons (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *