Avatar billede bsp_andreas Nybegynder
03. september 2004 - 11:25 Der er 11 kommentarer og
1 løsning

foreach (CheckBox ch in Repeater1.Items)?

foreach(CheckBox ch in Repeater1.Items)
{
  Response.Write(ch.Checked);
}
   

Hej, kan man dette - eller noget i retningen??
Jeg får nemlig en fejl:
System.InvalidCastException: Specified cast is not valid.

Kan nogen hjælpe?
Avatar billede guidmaster Nybegynder
03. september 2004 - 11:30 #1
Du skal lige have et tjek på om typen er rigtig:
X foreach(CheckBox ch in Repeater1.Items)
{
If ctl.GetType().ToString().Equals("System.Web.UI.WebControls.CheckBox")
{
  Response.Write(ch.Checked);
}
}
Avatar billede bsp_andreas Nybegynder
03. september 2004 - 11:37 #2
desværre
Jeg får stadig samme fejl: System.InvalidCastException: Specified cast is not valid

Det er i denne linie, jeg får fejlen:
foreach(CheckBox ch in Repeater1.Items)
Avatar billede guidmaster Nybegynder
03. september 2004 - 11:57 #3
Det er da meget muligt at du skal ind og have fat på Controls istedet
Avatar billede bsp_andreas Nybegynder
03. september 2004 - 12:08 #4
Dette virker og bliver afviklet, men udskriver ikke rigtig andet end:
"System.Web.UI.WebControls.RepeaterItem" for hver række i repeateren, dvs. 8 gange.
Til sidste skriver den så også lige: System.Web.UI.WebControls.RepeaterItem, en enkelt gang.

foreach( Control c in Repeater1.Controls)
{
  Response.Write( (c.GetType()).ToString() );
}


Har det noget at gøre med at jeg propper dem på siden ved at skrive
<asp:CheckBox runat="server"></asp:CheckBox> ??
Jeg gør ingenting på aspx.cs-siden.
Avatar billede bsp_andreas Nybegynder
03. september 2004 - 12:40 #5
Følgende kode virker også: Den udskriver 8 gange, som den skal (da der er 8 checkboxe, men den skriver false hver gang, selvom jeg har krydset flere eller samtlige af)

foreach( Control c in Repeater1.Controls)
{
  foreach(Control ct in ((RepeaterItem)c).Controls )
  {
    if(ct is CheckBox)
    {
      Response.Write( ((CheckBox)ct).Checked);
    }
  }
}

Glemmer jeg noget??
Avatar billede jepsen999 Nybegynder
03. september 2004 - 16:38 #6
Det er vel noget i denne stil du er ude efter:
Hvis du f.eks. har en tekstbox i repeateren der har id="txtAntalVarer" kan du bruge:

foreach (RepeaterItem item in  Repeater1.Items)
{
    TextBox tb = (TextBox)item.FindControl("txtAntalVarer");
    Response.Write(tb.Text);
}

Fra : http://www.eksperten.dk/spm/533297
Du skal bare udskifte textbox med checkbox ;)
Avatar billede jepsen999 Nybegynder
03. september 2004 - 16:39 #7
- og give den checkbox du leder efter et id
Avatar billede bsp_andreas Nybegynder
06. september 2004 - 09:25 #8
det er muligvis korrekt, men desværre skriver den at:  System.NullReferenceException: Object reference not set to an instance of an object.

Dette går jeg ud fra skyldes at mine checkboxes bliver oprettet dynamisk i min aspx-kode, ved bare at skrive <asp:checkbox runat... id="checkbox1"></checkbox>

Det betyder at de ikke er oprettet som protectede variable i min aspx.cs klasse.

Hvordan kan jeg klare det problem??

Derudover kan jeg heller ikke få lov til at lave et dynamisk id på mine checboxes:
f.eks. : <asp:checkbox id="<%# DataBinder.Eval(Container.DataItem, "tilbudnr")%>" />

Er der nogen som kan hjælpe??
Avatar billede jepsen999 Nybegynder
06. september 2004 - 19:01 #9
Har du navngivet checkboxen med det id du kalder FindControl på?
Eks:
ASPX:
<asp:Repeater id="Repeater1" runat="server">
    <ItemTemplate>
    <asp:CheckBox ID="minCheckbox" Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem,"A")%>'>
    </asp:CheckBox>
        </ItemTemplate>
</asp:Repeater>
<asp:Button id="Button2" runat="server" Text="Test repeater"></asp:Button>

Codebehind:
private void Button2_Click(object sender, System.EventArgs e)
{
    foreach (RepeaterItem item in  Repeater1.Items)
    {
        CheckBox tb = (CheckBox)item.FindControl("minCheckbox");
        Response.Write(tb.Checked.ToString());
    }
}
Avatar billede jepsen999 Nybegynder
06. september 2004 - 19:03 #10
Hov, se lige bort fra
Checked='<%# DataBinder.Eval(Container.DataItem,"A")%>'
Det var for at få mit eksempel til at køre, men prøv uden at databinde først. Så bliver det ikke nødvendigt med de dynamiske id'er.
Avatar billede bsp_andreas Nybegynder
07. september 2004 - 09:35 #11
Jeg lukker spm. her. Det vil simpelthen ikke virke og chefen vil ikke vente længere.
Er skiftet til datagrid i stedet og må vente med den perfekte løsning.

Tak for svarene.

mvh
Avatar billede jepsen999 Nybegynder
07. september 2004 - 17:49 #12
Har du prøvet mit eksempel? Hvilken fejl får du?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester