Avatar billede Slettet bruger
27. februar 2006 - 09:23 Der er 65 kommentarer og
1 løsning

Checkboxe i en Repeater

Jeg genbruger noget gammelt script til at hente en vis værdi fra databasen ind i mine checkboxe!

    if(OurDataReader["aktiv"].ToString().CompareTo("ja") == 0)
            {
                CbAktiv.Checked = true;
                }
                else
                    {
                    CbAktiv.Checked = false;
                }
    OurConnection.Close();
    OurDataReader.Close();           
    }
}

Problemet er nu har jeg prøvet at sætte checkboxen ind i en Repeater, og der kan scriptet ikke finde checkboxen

CS0246: Typen eller navneområdenavnet 'CbAktiv' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)

<ASP:Repeater id="TheRepeater" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %> 
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" />
</ItemTemplate>
</ASP:Repeater>
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 09:26 #1
lav et onitemcreated event på din repeater
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 09:27 #2
laver lige et eksempel.
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 09:29 #3
<ASP:Repeater id="TheRepeater" runat="server" OnItemCreated="dinRepeater_ItemCreated">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %>
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" />
</ItemTemplate>
</ASP:Repeater>
i codebehind protected void dinRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        CheckBox cb = e.Item.FindControl("CbAktiv") as CheckBox;
        //lav kode som sætter checkboks checked aktiv eller ej
    }
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 09:31 #4
du kan også bare gøre
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" checked='<%# (bool)DataBinder.Eval(Container.DataItem, "sommerhusadresse") %> ' />
Avatar billede Slettet bruger
27. februar 2006 - 09:49 #5
Mht til sidste mulighed, så skal Databind'eren ikke binde "sommerhusadresse" men en attribut som hedder "aktiv". Prøvede denne løsning, men fik samme fejl!

CS0246: Typen eller navneområdenavnet 'CbAktiv' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 10:21 #6
den sidste er :
<ASP:Repeater id="TheRepeater" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %>
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' />
</ItemTemplate>
</ASP:Repeater>
altså uden itemcreated.
Avatar billede Slettet bruger
27. februar 2006 - 10:26 #7
Jeg tror fejlen skal findes i det genbrugte script:

if(OurDataReader["aktiv"].ToString().CompareTo("ja") == 0)
            {
                CbAktiv.Checked = true; <--- FEJL!!
                }
                else
                    {
                    CbAktiv.Checked = false;
                }
    OurConnection.Close();
    OurDataReader.Close();           
    }
}

Det er altid dér hvor fejlen opstår!
Avatar billede Slettet bruger
27. februar 2006 - 10:27 #8
Fik nemlig samme fejlmeddelse ved eksemplet fra 10:26 :)
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 10:29 #9
hvordan binder du data til din repeater ?
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 10:30 #10
hvis du bruger eksemplet fra10:26 skal du fjerne :
if(OurDataReader["aktiv"].ToString().CompareTo("ja") == 0)
            {
                CbAktiv.Checked = true; <--- FEJL!!
                }
                else
                    {
                    CbAktiv.Checked = false;
                }
Avatar billede Slettet bruger
27. februar 2006 - 10:35 #11
Får lige hele scriptet:

<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (!IsPostBack) {

    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OleDbDataAdapter OurDataAdapter;
    DataSet OurDataSet = new DataSet();
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OurConnection.Open();       
    OurCommand = new OleDbCommand("SELECT ID, navn, tlfnummer, mobil, adresse, mail, omraade, sommerhusadresse, aktiv FROM huse", OurConnection);
    OurDataAdapter = new OleDbDataAdapter(OurCommand);
    OurDataAdapter.Fill(OurDataSet, "huse");
    TheRepeater.DataSource=OurDataSet.Tables["huse"];
    DataBind();                 
    }
}
</script>

<form runat="server">
<ASP:Repeater id="TheRepeater" runat="server"><ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %>
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' />
</ItemTemplate></ASP:Repeater>
</form>

Siger:
System.InvalidCastException: Den angivne ændring er ugyldig.

Fejlen ligger i denne linie:
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' />
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 11:13 #12
hvad type er felte aktiv ?
Avatar billede Slettet bruger
27. februar 2006 - 11:31 #13
Er det attributten "aktiv" i databasen? Den er af tyen "Tekst"
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 11:41 #14
så kan du gøre det på denne måde:



<ASP:Repeater id="TheRepeater" runat="server"><ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %>
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# FormatCheckBox(DataBinder.Eval(Container.DataItem, "aktiv").ToString()) %> ' />
i codebehind har du så
public bool FormatCheckBox(string aktiv)
{
if(aktiv=="ja")
{
return true;
}
return false;
}
Avatar billede Slettet bruger
27. februar 2006 - 12:10 #15
YEPS! Så virkede det!  MEN! -nyt problem.

Når den nu henter værdier i databasen, vil jeg også gerne være i stand til sætte værdier ind.

Til dette bruger jeg dette script:

void InsertCommand(Object sender, System.EventArgs e) {
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strLev ="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }    
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
    LoadData();
}   

Men den giver den velkendte fejlmelding:  CS0246: Typen eller navneområdenavnet 'CbAktiv' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)
Avatar billede Slettet bruger
27. februar 2006 - 12:16 #16
Ok - den skulle selvfølgelig hedde:

    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv ="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }   

men det gør ingen forskel...
Avatar billede dr_chaos Nybegynder
27. februar 2006 - 13:42 #17
prøv med


void InsertCommand(Object sender, System.EventArgs e) {

RepeaterItem ri = sender as RepeaterItem;
CheckBox CbAktiv = ri.Controls[6] as CheckBox;

    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }   
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
    LoadData();
}
Avatar billede Slettet bruger
28. februar 2006 - 08:19 #18
Giver først en fejl når jeg aktiverer scriptet!

System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

Linje 34: void InsertCommand(Object sender, System.EventArgs e) {
Linje 35: RepeaterItem ri = sender as RepeaterItem;
Linje 36: CheckBox CbAktiv = ri.Controls[6] as CheckBox; <---Fejlmeddelse-------
Linje 37:
Linje 38:    string strAktiv;
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 08:45 #19
prøv at tjekke hvor mange controls der er i ri
ved et kigge på ri.Controls.Count.
Det kan være at du skal prøv dig lidt frem
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 08:46 #20
du kan også prøve med
CheckBox CbAktiv = ri.FindControls("CbAktiv") as CheckBox;
Avatar billede Slettet bruger
28. februar 2006 - 08:51 #21
"prøv at tjekke hvor mange controls der er i ri
ved et kigge på ri.Controls.Count."

Dén forstår jeg ikke rigtig...

"CheckBox CbAktiv = ri.FindControls("CbAktiv") as CheckBox;" giver følgende meddelse:
CS0117: 'System.Web.UI.WebControls.RepeaterItem' indeholder ikke en definition af 'FindControls'

Linje 34: void InsertCommand(Object sender, System.EventArgs e) {
Linje 35: RepeaterItem ri = sender as RepeaterItem;
Linje 36: CheckBox CbAktiv = ri.FindControls("CbAktiv") as CheckBox;<---------------
Linje 37:    string strAktiv;
Linje 38:        if (CbAktiv.Checked)
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 08:53 #22
skulle være

CheckBox CbAktiv = ri.FindControl("CbAktiv")as CheckBox;
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 08:54 #23
Response.Write(ri.Controls.Count);
Avatar billede Slettet bruger
28. februar 2006 - 09:05 #24
1. CheckBox CbAktiv = ri.FindControl("CbAktiv")as CheckBox; anno 0853 virker heller ikke.
System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

2. Response.Write(ri.Controls.Count); har også problemer med at virke, på trods af jeg prøvede lidt frem og tilbage med forskellige variationer af sætningen...
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:07 #25
prøv med
Response.Write(ri.Controls.Count.ToString());
Avatar billede Slettet bruger
28. februar 2006 - 11:12 #26
Har prøvet følgende muligheder:
Response.Write(ri.Controls.Count.ToString());

System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

Response.Write(ri.Control.Count.ToString());
CS0117: 'System.Web.UI.WebControls.RepeaterItem' indeholder ikke en definition af 'Control'

Response.Write(ri.FindControl.Count.ToString());
CS0119: 'System.Web.UI.Control.FindControl(string)' angiver 'metode', som ikke er gyldig i den givne sammenhæng
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:23 #27
prøv med

void InsertCommand(Object sender, RepeaterItemEventArgs e) {

CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;

    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    } 
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
    LoadData();
}
Avatar billede Slettet bruger
28. februar 2006 - 11:28 #28
Nu kan den ikke lide knappen ???

CS0123: Metoden 'ASP.aktiver_aspx.InsertCommand(object, System.Web.UI.WebControls.RepeaterItemEventArgs)' passer ikke til stedfortræderen 'void System.EventHandler(object, System.EventArgs)'
Avatar billede Slettet bruger
28. februar 2006 - 11:28 #29
Linje 84: </ASP:Repeater>
Linje 85: <br>
Linje 86: <div align="center"><asp:Button ID="btUpdate" OnClick="InsertCommand" Text="Opdater"  runat="server" /></div>
Linje 87: </form>
Linje 88: </body>
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:31 #30
jeg troede at knappen var en del af din repeater.
Den måde du har lavet det på gør det jo umuligt at finde ud af hvor der er sat kryds og hvor der ikke er sat kryds.
Avatar billede Slettet bruger
28. februar 2006 - 11:36 #31
Har lige prøvet at sætte knappen ind i repeateren, med denne frjlmeddelse:

CS0123: Metoden 'ASP.aktiver_aspx.InsertCommand(object, System.Web.UI.WebControls.RepeaterItemEventArgs)' passer ikke til stedfortræderen 'void System.EventHandler(object, System.EventArgs)'

kan det være knappen som er udformet forkert?
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:44 #32
prøv med
protected void InsertCommand(object sender, RepeaterCommandEventArgs e)
    {
...din kode
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:44 #33
din knap:
<asp:Button ID="btUpdate" Text="Opdater"  runat="server" />
skal placeres i itemtemplate
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:46 #34
og din repeater skal se ud på denne måde:


<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "ID") %>
<%# DataBinder.Eval(Container.DataItem, "navn") %>
<%# DataBinder.Eval(Container.DataItem, "tlfnummer") %>
<%# DataBinder.Eval(Container.DataItem, "mobil") %>
<%# DataBinder.Eval(Container.DataItem, "omraade") %>
<%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %>
<asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' />
<asp:Button ID="btUpdate" Text="Opdater"  runat="server" />
</ItemTemplate></ASP:Repeater>
Avatar billede Slettet bruger
28. februar 2006 - 11:54 #35
Den bliver ved!
<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
giver flg. fejlmeddelse:

CS0123: Metoden 'ASP.aktiver_aspx.InsertCommand(object, System.Web.UI.WebControls.RepeaterItemEventArgs)' passer ikke til stedfortræderen 'void System.Web.UI.WebControls.RepeaterCommandEventHandler(object, System.Web.UI.WebControls.RepeaterCommandEventArgs)'
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 11:57 #36
prøv med
protected void InsertCommand(object sender, RepeaterItemEventArgs e)
    {
...din kode
Avatar billede Slettet bruger
28. februar 2006 - 12:02 #37
Denne fejl:

CS0123: Metoden 'ASP.aktiver_aspx.InsertCommand(object, System.Web.UI.WebControls.RepeaterItemEventArgs)' passer ikke til stedfortræderen 'void System.Web.UI.WebControls.RepeaterCommandEventHandler(object, System.Web.UI.WebControls.RepeaterCommandEventArgs)'
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 12:07 #38
prøvede du med :
protected void InsertCommand(object sender, RepeaterCommandEventArgs e)
    ?
Avatar billede Slettet bruger
28. februar 2006 - 12:10 #39
Ja! Der er ingen forskel i fejlmeldingerne... vil det være en idé jeg ligger HELE scriptet ud?
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 12:13 #40
ja
Avatar billede Slettet bruger
28. februar 2006 - 12:17 #41
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true" %>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (!IsPostBack) {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OleDbDataAdapter OurDataAdapter;
    DataSet OurDataSet = new DataSet();
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OurConnection.Open();       
    OurCommand = new OleDbCommand("SELECT ID, navn, tlfnummer, mobil, adresse, mail, omraade, sommerhusadresse, aktiv FROM huse", OurConnection);
    OurDataAdapter = new OleDbDataAdapter(OurCommand);
    OurDataAdapter.Fill(OurDataSet, "huse");
    TheRepeater.DataSource=OurDataSet.Tables["huse"];
    DataBind();
    }
}

public bool FormatCheckBox(string aktiv)
{
if(aktiv=="ja")
{
return true;
}
return false;
}

protected void InsertCommand(object sender, RepeaterItemEventArgs e){
CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    } 
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
}

</script>
<html>
<head>
<title>aktiver</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style/ns.css" rel="stylesheet" type="text/css">
</head>
<body>
<form runat="server">
<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
<table border="0" cellspacing="0" cellpadding="0" background="../images/bg.gif" align="center">
  <tr>
    <td>
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><%# DataBinder.Eval(Container.DataItem, "ID") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td> 
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
  </tr>
</table>
<br>
  </td>
  </tr>
</table>
<br>
<div align="center"><asp:Button ID="btUpdate" Text="Opdater"  runat="server" /></div>
</ItemTemplate></ASP:Repeater>
</form>
</body>
</html>
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 12:20 #42
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true" %>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (!IsPostBack) {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OleDbDataAdapter OurDataAdapter;
    DataSet OurDataSet = new DataSet();
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OurConnection.Open();     
    OurCommand = new OleDbCommand("SELECT ID, navn, tlfnummer, mobil, adresse, mail, omraade, sommerhusadresse, aktiv FROM huse", OurConnection);
    OurDataAdapter = new OleDbDataAdapter(OurCommand);
    OurDataAdapter.Fill(OurDataSet, "huse");
    TheRepeater.DataSource=OurDataSet.Tables["huse"];
    DataBind();
    }
}

public bool FormatCheckBox(string aktiv)
{
if(aktiv=="ja")
{
return true;
}
return false;
}

protected void InsertCommand(object sender, RepeaterCommandEventArgs e){
CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
}

</script>
<html>
<head>
<title>aktiver</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style/ns.css" rel="stylesheet" type="text/css">
</head>
<body>
<form runat="server">
<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
<table border="0" cellspacing="0" cellpadding="0" background="../images/bg.gif" align="center">
  <tr>
    <td>
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><%# DataBinder.Eval(Container.DataItem, "ID") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td>
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
<td><asp:Button ID="btUpdate" Text="Opdater"  runat="server" /></td>
  </tr>
</table>
<br>
  </td>
  </tr>
</table>
<br>
<div align="center"></div>
</ItemTemplate></ASP:Repeater>
</form>
</body>
</html>
Avatar billede Slettet bruger
28. februar 2006 - 12:22 #43
System.InvalidCastException: Den angivne ændring er ugyldig.

Linje 76:    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 12:26 #44
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true" %>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (!IsPostBack) {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OleDbDataAdapter OurDataAdapter;
    DataSet OurDataSet = new DataSet();
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OurConnection.Open();     
    OurCommand = new OleDbCommand("SELECT ID, navn, tlfnummer, mobil, adresse, mail, omraade, sommerhusadresse, aktiv FROM huse", OurConnection);
    OurDataAdapter = new OleDbDataAdapter(OurCommand);
    OurDataAdapter.Fill(OurDataSet, "huse");
    TheRepeater.DataSource=OurDataSet.Tables["huse"];
    DataBind();
    }
}

public bool FormatCheckBox(string aktiv)
{
if(aktiv=="ja")
{
return true;
}
return false;
}

protected void InsertCommand(object sender, RepeaterCommandEventArgs e){
CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
}

</script>
<html>
<head>
<title>aktiver</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style/ns.css" rel="stylesheet" type="text/css">
</head>
<body>
<form runat="server">
<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
<table border="0" cellspacing="0" cellpadding="0" background="../images/bg.gif" align="center">
  <tr>
    <td>
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><%# DataBinder.Eval(Container.DataItem, "ID") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td>
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
  </tr>
</table>
<br>
  </td>
  </tr>
</table>
<br>
<div align="center"><asp:Button ID="btUpdate" Text="Opdater"  runat="server" /></div>
</ItemTemplate></ASP:Repeater>
</form>
</body>
</html>
Avatar billede Slettet bruger
28. februar 2006 - 12:35 #45
Samme fejl som 12:22 >:-(
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 12:41 #46
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" Debug="true" %>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
void Page_Load(Object Sender, EventArgs E) {

    if (!IsPostBack) {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    OleDbDataAdapter OurDataAdapter;
    DataSet OurDataSet = new DataSet();
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OurConnection.Open();   
    OurCommand = new OleDbCommand("SELECT ID, navn, tlfnummer, mobil, adresse, mail, omraade, sommerhusadresse, aktiv FROM huse", OurConnection);
    OurDataAdapter = new OleDbDataAdapter(OurCommand);
    OurDataAdapter.Fill(OurDataSet, "huse");
    TheRepeater.DataSource=OurDataSet.Tables["huse"];
    DataBind();
    }
}

public bool FormatCheckBox(string aktiv)
{
if(aktiv=="ja")
{
return true;
}
return false;
}

protected void InsertCommand(object sender, RepeaterCommandEventArgs e){
CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
}

</script>
<html>
<head>
<title>aktiver</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style/ns.css" rel="stylesheet" type="text/css">
</head>
<body>
<form runat="server">
<ASP:Repeater id="TheRepeater" OnItemCommand="InsertCommand" runat="server"><ItemTemplate>
<table border="0" cellspacing="0" cellpadding="0" background="../images/bg.gif" align="center">
  <tr>
    <td>
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><%# DataBinder.Eval(Container.DataItem, "ID") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td>
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# FormatCheckBox(DataBinder.Eval(Container.DataItem, "aktiv").ToString()) %> ' /></td>
  </tr>
</table>
<br>
  </td>
  </tr>
</table>
<br>
<div align="center"><asp:Button ID="btUpdate" Text="Opdater"  runat="server" /></div>
</ItemTemplate></ASP:Repeater>
</form>
</body>
</html>
Avatar billede Slettet bruger
28. februar 2006 - 12:46 #47
Øhm! Ingen fejlmeddelse nu. Nu står der en Opdatér knap ud for hver adresse, men det er bare et layout spørgsmål. MEN værdien "ja" indsættes heller ikke i attributten "aktiv" i tabellen "huse"...
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 13:01 #48
det har noget at gøre med din sql sætning.
Den skal du teste
Avatar billede Slettet bruger
02. marts 2006 - 13:09 #49
Hm! Således ser min sql sætning ud! Virker i alle mine andre scripts...
Avatar billede Slettet bruger
02. marts 2006 - 13:09 #50
OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
Avatar billede dr_chaos Nybegynder
02. marts 2006 - 15:22 #51
er der kun en kolonne i huse ?
Avatar billede Slettet bruger
02. marts 2006 - 15:29 #52
Nope! Men den skal kun berøre 'aktiv'
Avatar billede dr_chaos Nybegynder
03. marts 2006 - 10:13 #53
tillader de andre kollonner null værdier ?
Avatar billede dr_chaos Nybegynder
03. marts 2006 - 10:13 #54
Prøv lige at vise den sqlsætning der virker.
Avatar billede Slettet bruger
03. marts 2006 - 10:16 #55
Får lige et hélt script!

void InsertCommand(Object sender, System.EventArgs e) {
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("database.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("INSERT INTO Indhold (Navn, Tekst) Values (@Navn, @Tekst)" ,OurConnection);
    OurCommand.Parameters.Add("@Navn", OleDbType.VarChar, 10).Value = InsertNavn.Text;
    OurCommand.Parameters.Add("@Tekst", OleDbType.VarChar, 20).Value = InsertTekst.Text;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
    LoadData();
}
Avatar billede dr_chaos Nybegynder
03. marts 2006 - 12:58 #56
Jeg tror at du skal bruge et updatescript ikke insert.
Avatar billede Slettet bruger
07. marts 2006 - 10:53 #57
Det med updatescriptet havde du ret i! Men ét flueben updater hele databasen nu! ikke godt...
Det er højest sandsynligt i sql sætningen problemet skal løses, såsom at update udfra id'et i databasen...
Avatar billede dr_chaos Nybegynder
07. marts 2006 - 13:05 #58
lav din tabel om på denne måde:

<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><asp:label id="lblID" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' > </asp:label></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td>
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
  </tr>
</table>
Avatar billede dr_chaos Nybegynder
07. marts 2006 - 13:08 #59
din metode skal være noget med:
protected void InsertCommand(object sender, RepeaterCommandEventArgs e){
CheckBox CbAktiv= e.Item.FindControl("CbAktiv") as CheckBox;
Label lblID = e.Item.FindControl("lblID") as Label;
int id = int.Parse(lblID.Text);
    string strAktiv;
        if (CbAktiv.Checked)
            {
            strAktiv="ja";
                    }
            else
            {
    strAktiv = "slettet";
    }
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("../database/ns.mdb")+";");
    OleDbCommand OurCommand;
    OurCommand = new OleDbCommand("UPDATE huse SET(aktiv=@aktiv) WHERE ID =@ID" ,OurConnection);
    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
OurCommand.Parameters.Add("@ID", OleDbType.Int, 4).Value = id;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
}
Avatar billede Slettet bruger
07. marts 2006 - 13:10 #60
CS0117: 'System.Data.OleDb.OleDbType' indeholder ikke en definition af 'Int'

Linje 50:    OurCommand = new OleDbCommand("UPDATE huse SET(aktiv=@aktiv) WHERE ID =@ID" ,OurConnection);
Linje 51:    OurCommand.Parameters.Add("@Aktiv", OleDbType.VarChar, 10).Value = strAktiv;
Linje 52:    OurCommand.Parameters.Add("@ID", OleDbType.Int, 4).Value = id;
Linje 53:    OurConnection.Open();
Linje 54:    OurCommand.ExecuteNonQuery();
Avatar billede dr_chaos Nybegynder
07. marts 2006 - 13:11 #61
prøv at se hvad typer der findes i OleDbType.
Avatar billede Slettet bruger
07. marts 2006 - 13:17 #62
Lavede 'Int' om til 'VarChar'. Så opstod denne fejlmeddelse...

System.InvalidCastException: Den angivne ændring er ugyldig.
Linje 78:    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "aktiv") %> ' /></td>
Avatar billede Slettet bruger
07. marts 2006 - 13:35 #63
Har tested flere mulige foreslag! Integer, Int16, Int32, Int64, Single og Double!
-de giver alle sammen den samme fejlmeddelse som allerede nævnt!
Avatar billede dr_chaos Nybegynder
07. marts 2006 - 13:44 #64
<table border="0" cellspacing="0" cellpadding="0" bgcolor="#E5F0FF">
  <tr>
    <td width="40" align="center"><asp:label id="lblID" runat="Server" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>' > </asp:label></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "navn") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "tlfnummer") %></td>
    <td width="100"><%# DataBinder.Eval(Container.DataItem, "mobil") %></td>
    <td width="180"><%# DataBinder.Eval(Container.DataItem, "omraade") %></td>
    <td width="280"><%# DataBinder.Eval(Container.DataItem, "sommerhusadresse") %></td>
    <td width="40"><asp:CheckBox ID="CbAktiv" Text="ja" runat="server" Checked='<%# FormatCheckBox(DataBinder.Eval(Container.DataItem, "aktiv").ToString()) %> ' /></td>
  </tr>
</table>
Avatar billede Slettet bruger
08. marts 2006 - 08:40 #65
Yeps! Dér var den! Problemet er løst, så smid et svar! Det er alle 100 pt. værd ;-)
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:05 #66
svar :)
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