Verkar som om det första inlägget jag gjorde fick nåt spel nånstans, provar igen: Funkar inte. Försökte (efter konvertering till VB, med följande tester) Hittat lösningen. Man måste lägga till en check (TypeOf ) av vilken kontroll man skall kontrollera annars blir det felmeddelanden enligt föregående problemVilka kontroller finns i Placeholder (nytt)
    
    
Har ett litet problem
Jag skapar ett antal checkboxar baserat på innehåll i en db.
Sätter namnet för chkboxen till "chkSegment_" och ID för respektive post (chkSegment_1, chkSegment_23)
Det kan komma att ändra sig i den tabell som skall läsa ut vilka checkboxar som skall finns med i formuläret vilket innebär att jag inte på förhand vet vilka ID nummer som kommer att adders till "chkSegment_"
Att skapa dessa i Placeholdern är inga problem:
<code>
mySqlConnection = New SqlConnection(strConString) 
mySqlCommand = New SqlCommand("select id_segment, segment from segment where aktiv = 1 order by segment", mySqlConnection) 
mySqlConnection.Open() 
myReader = mySqlCommand.ExecuteReader() 
Dim i As Integer = 0 
Do While (myReader.Read()) 
    i += 1 
    Dim strID_Segment As String = myReader("id_segment") 
    Dim strSegment As String = myReader("segment") 
    myCheckbox = New CheckBox() 
    myCheckbox.ID = "chkSegment_" & strID_Segment 
    myCheckbox.Text = strSegment 
    myCheckbox.Checked = False 
    PlaceHolder.Controls.Add(myCheckbox) 
    ' Om vi har ritat ur 5 kontoller, sätt in en radbrytning 
    If i Mod 5 = 0 Then 
        Dim strBreak As New LiteralControl("<br>  ") 
        PlaceHolder.Controls.Add(strBreak) 
    End If 
Loop 
</code>
Däremot vet jag inte hur jag skall göra för att loopa ut vilka checkboxar som finns i Placeholdern.
Jag behöver veta vad checkboxarna heter för att kunna ta ut ID (allt förutom "chkSegment_"), för att kunna uppdatera databasen.
Hittade nedanstående kod som används för att kolla om en viss skapad checkbox har Checked satt eller ej.
<code>
Label1.Text = CType(PlaceHolder1.FindControl("chkSegment_1"), CheckBox).Checked.ToString 
</code>
Problemet är att då "måste veta" jag ju vad kontrollen heter,  skulle vilja ha nånting liknande:
<code>
for each ctl in PlaceHolder
var = CType(PlaceHolder1.FindControl(ctl), CheckBox).Checked.ToString 
next
</code>
TIASv: Vilka kontroller finns i Placeholder (nytt)
    
    
<code>
foreach(Control ctrl In  PlaceHolder.Controls)
{
    Response.Write(((ChekcBox)ctrl).Name);
}
</code>Sv: Vilka kontroller finns i Placeholder (nytt)
    
    
<code>
Dim ctrl As Control
For Each ctrl In PlaceHolder1.Controls
  Label1.Text &= CType(ctrl, CheckBox).ID.ToString()
Next
</code>
Denna genererar följande felkod:
System.NullReferenceException: Object reference not set to an instance of an object.
Felet inträffar på raden som börjar med: Label1.Text
<code>
Dim ctrl As Control
For Each ctrl In PlaceHolder1.Controls
  Label1.Text &= "<br>" & CType(PlaceHolder1.FindControl(ctrl.ID), CheckBox).Checked.ToString
Next
</code>
Denna genererar följande felkod:
System.InvalidCastException: Specified cast is not valid.
Felet inträffar på raden som börjar med: Label1.TextSv: Vilka kontroller finns i Placeholder (nytt)
    
    
<code>
Dim ctrl As Control
For Each ctrl In PlaceHolder.Controls
  
  ' ** Här måste man kontrollera vilken typ av kontroll som man vil kontrollera
  If TypeOf ctrl Is CheckBox Then
    Label1.Text &= "<br>" & ctrl.ID & " = " & CType(PlaceHolder.FindControl(ctrl.ID), CheckBox).Checked.ToString
  End If
Next
</code>