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>
Annonceindlæg tema
27. februar 2006 - 09:26
#1
lav et onitemcreated event på din repeater
27. februar 2006 - 09:27
#2
laver lige et eksempel.
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 }
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") %> ' />
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?)
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.
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!
Slettet bruger
27. februar 2006 - 10:27
#8
Fik nemlig samme fejlmeddelse ved eksemplet fra 10:26 :)
27. februar 2006 - 10:29
#9
hvordan binder du data til din repeater ?
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; }
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") %> ' />
27. februar 2006 - 11:13
#12
hvad type er felte aktiv ?
Slettet bruger
27. februar 2006 - 11:31
#13
Er det attributten "aktiv" i databasen? Den er af tyen "Tekst"
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; }
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?)
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...
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(); }
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;
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
28. februar 2006 - 08:46
#20
du kan også prøve med CheckBox CbAktiv = ri.FindControls("CbAktiv") as CheckBox;
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)
28. februar 2006 - 08:53
#22
skulle være CheckBox CbAktiv = ri.FindControl("CbAktiv")as CheckBox;
28. februar 2006 - 08:54
#23
Response.Write(ri.Controls.Count);
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...
28. februar 2006 - 11:07
#25
prøv med Response.Write(ri.Controls.Count.ToString());
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
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(); }
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)'
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>
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.
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?
28. februar 2006 - 11:44
#32
prøv med protected void InsertCommand(object sender, RepeaterCommandEventArgs e) { ...din kode
28. februar 2006 - 11:44
#33
din knap: <asp:Button ID="btUpdate" Text="Opdater" runat="server" /> skal placeres i itemtemplate
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>
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)'
28. februar 2006 - 11:57
#36
prøv med protected void InsertCommand(object sender, RepeaterItemEventArgs e) { ...din kode
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)'
28. februar 2006 - 12:07
#38
prøvede du med : protected void InsertCommand(object sender, RepeaterCommandEventArgs e) ?
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?
28. februar 2006 - 12:13
#40
ja
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>
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>
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>
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>
Slettet bruger
28. februar 2006 - 12:35
#45
Samme fejl som 12:22 >:-(
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>
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"...
28. februar 2006 - 13:01
#48
det har noget at gøre med din sql sætning. Den skal du teste
Slettet bruger
02. marts 2006 - 13:09
#49
Hm! Således ser min sql sætning ud! Virker i alle mine andre scripts...
Slettet bruger
02. marts 2006 - 13:09
#50
OurCommand = new OleDbCommand("INSERT INTO huse (aktiv) Values (@aktiv)" ,OurConnection);
02. marts 2006 - 15:22
#51
er der kun en kolonne i huse ?
Slettet bruger
02. marts 2006 - 15:29
#52
Nope! Men den skal kun berøre 'aktiv'
03. marts 2006 - 10:13
#53
tillader de andre kollonner null værdier ?
03. marts 2006 - 10:13
#54
Prøv lige at vise den sqlsætning der virker.
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(); }
03. marts 2006 - 12:58
#56
Jeg tror at du skal bruge et updatescript ikke insert.
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...
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>
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(); }
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();
07. marts 2006 - 13:11
#61
prøv at se hvad typer der findes i OleDbType.
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>
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!
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>
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 ;-)
08. marts 2006 - 09:05
#66
svar :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.