Avatar billede larsny Nybegynder
27. september 2004 - 17:22 Der er 25 kommentarer og
1 løsning

fejl ved sending af form

Nogen der kan forklare mig hvad dette betyder og hvad det er der går galt?

Fejl:
Detaljer om undtagelse: System.Web.HttpException: Der kan ikke være flere markerede elementer i en DropDownList.

Staksporing:
[HttpException (0x80004005): Der kan ikke være flere markerede elementer i en DropDownList.]
  System.Web.UI.WebControls.DropDownList.RenderContents(HtmlTextWriter writer) +326
  System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
  System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +44
  System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +262
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
  System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
  System.Web.UI.Control.Render(HtmlTextWriter writer) +7
  System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
  System.Web.UI.Page.ProcessRequestMain() +1926
Avatar billede jakobandersen Nybegynder
27. september 2004 - 17:23 #1
Er du sikker på at du ikke er kommet til at give et formularelement samme navn som din dropdownlist?
Avatar billede larsny Nybegynder
27. september 2004 - 17:26 #2
ja der er ingen id'er der er magen til hinanden
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:28 #3
Du har sat flere Items til at være selected, - der må kun sættes én.
Avatar billede larsny Nybegynder
27. september 2004 - 17:29 #4
kommer den så ikke med fejl i starten?
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:30 #5
F.eks . ville følgende kode smide fejlen:
private void Page_Load(object sender, System.EventArgs e)
{
    foreach (ListItem item in this.DropDownList1.Items)
    {
        item.Selected = true;
    }
}
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:32 #6
I starten? - Hvad mener du?
Da brugeren ikke kan vælge flere items gennem grænsefladen, må du et sted i din kode skrive at nogle items skal være selected.
Avatar billede larsny Nybegynder
27. september 2004 - 17:34 #7
jeg har lavet en:
void Page_Load(Object sender, EventArgs e) {
}
der køre det hele igennem og select'er det der skal....
og fejlen kommer først når jeg trykker på submit knappen...
Avatar billede jakobandersen Nybegynder
27. september 2004 - 17:38 #8
Har du den fejlbehæftede kode til at ligge online?
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:39 #9
Pageload bliver kaldt som det første når du trykker på  submit-knappen. Så det kan være der bliver sat et andet selected item end ved første page_load (altså når siden loades første gang)
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:41 #10
Så koden:
private void Page_Load(object sender, System.EventArgs e)
{
    int selectedIndex = Convert.ToInt16(this.TextBox1.Text);
    this.DropDownList1.Items[selectedIndex].Selected = true;
}

vil altså fejle efter et postback (submit-knap-tryk) hvis indholdet i textbox1 er noget andet efter der er trykket på knappen.
Avatar billede larsny Nybegynder
27. september 2004 - 17:42 #11
jakobandersen -> du kan få min msn (larsnymand@hotmail.com) har ikke lyst til at give adressen da den ligger på min com...
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:46 #12
Du kan vel bare skrive din page_load kode her...
Avatar billede larsny Nybegynder
27. september 2004 - 17:46 #13
den er rimelig lang
Avatar billede jepsen999 Nybegynder
27. september 2004 - 17:49 #14
Prøv at bruge
this.dropdownlist.items.selectedindex = ??
eller
this.dropdownlist.item.selectedvalue = ??

istedet for at gennemløbe items og sætte en til at være valgt. Så er du sikker på at der KUN vælges én.
Avatar billede larsny Nybegynder
27. september 2004 - 17:58 #15
tror jeg har fundet ud af lidt...
Jeg havde lavet sådan en som i det gamle ASP:
<form action="createnew.aspx" id="editcalendar" method="post" runat=server>
men tror ikke action virker her...
derfor starter den page_load når jeg trykker på submit...
Den page_load jeg har nu starter lige så snart man kommer ind på siden...
hvordan gør jeg så al den kode ikke bliver kørt, men kun den som der skal behandle dataerne fra formen?
Avatar billede snepnet Nybegynder
27. september 2004 - 18:02 #16
page_load kører altid, men du kan spore om det er første gang siden vises, eller om der er tale om et postback ved at spørge på det :

if(!IsPostBack)
  // køres kun første gang
else
  // kører ved hvert efterfølgende postback

mvh
Avatar billede larsny Nybegynder
27. september 2004 - 18:04 #17
tak det årøver jeg :)
Avatar billede jepsen999 Nybegynder
27. september 2004 - 18:04 #18
Når du trykker på knappen vil siden først kalde page_load og derefter din button1_click procedure.

Den kode du ikke vil have afviklet hver gang siden loades (efter tryk på knapper osv.) kan skrives som:
private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostback){
    int selectedIndex = Convert.ToInt16(this.TextBox1.Text);
    this.DropDownList1.Items[selectedIndex].Selected = true;
}
}
Avatar billede larsny Nybegynder
27. september 2004 - 21:33 #19
det virkede :)
har bare lige en System.Data.OleDb.OleDbException: Der er en syntaksfejl i INSERT INTO-sætningen. fejl (kan i finde den?):
strSQL = "INSERT INTO calendar (";
    strSQL += "subject, ";
    strSQL += "place, ";
    strSQL += "notes, ";
    strSQL += "category, ";
    strSQL += "status, ";
    strSQL += "eventdate, ";
    strSQL += "starttime, ";
    strSQL += "endtime, ";
    strSQL += "allday) ";

    strSQL += "VALUES (";
    strSQL += "'" + Request["subject"] + "', ";
    strSQL += "'" + Request["place"] + "', ";
    strSQL += "'" + Request["notes"] + "', ";
    strSQL += "'" + Request["category"] + "', ";
    strSQL += "'" + Request["status"] + "', ";
    strSQL += "'" + eventdate2 + "', ";
    strSQL += "'" + starttime2 + "', ";
    strSQL += "'" + endtime2 + "', ";
    strSQL += Request["allday"] + ")";
Avatar billede snepnet Nybegynder
27. september 2004 - 21:38 #20
prøv at skriv den resulterende sql ud... så er det meget nemmere at se.
hvad forventes det det her at være for en type ?
(Request["allday"])
Avatar billede larsny Nybegynder
27. september 2004 - 21:40 #21
ups ja...
subject til og med status er "tekst"
eventdate2 til og med endtime2 er "datetime"
allday er et "tal"
Avatar billede snepnet Nybegynder
27. september 2004 - 21:48 #22
hmmm... synes ikke lige det springer i øjnene... hvis du har den resulterende sql, og eventuelt den fulde fejlmeddelelse ville det være fedt.
Avatar billede larsny Nybegynder
27. september 2004 - 21:54 #23
Lidt volsomt men her er det så :)
->

Serverfejl i programmet '/'.
--------------------------------------------------------------------------------

Der er en syntaksfejl i INSERT INTO-sætningen.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: Der er en syntaksfejl i INSERT INTO-sætningen.

Kildefejl:

Kildekoden, der oprettede denne ikke-afviklede undtagelse, kan kun vises, når den kompileres i fejlfindingstilstand. Hvis du vil aktivere denne tilstand, skal du bruge en af nedenstående metoder og derefter anmode om URL-adressen:

1. Tilføj et "Debug=true"-direktiv i starten af den fil, der forårsagede fejlen. Eksempel:

  <%@ Page Language="C#" Debug="true" %>

eller:

2) Føj følgende afsnit til konfigurationsfilen for dit program:

<configuration>
  <system.web>
      <compilation debug="true"/>
  </system.web>
</configuration>

Bemærk, at den anden metode gør, at alle filer i et givet program bliver kompileret i fejlfindingstilstand. Den første metode gør, at det kun er en bestemt fil, der bliver kompileret i fejlfindingstilstand.

Vigtigt! Hvis du kører programmer i fejlfindingstilstand, bruges der mere hukommelse og processorkraft. Du bør kontrollere, at fejlfinding er deaktiveret i et program, før du implementerer det i et produktionsmiljø. 

Staksporing:


[OleDbException (0x80040e14): Der er en syntaksfejl i INSERT INTO-sætningen.]
  System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
  System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
  System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
  System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
  System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
  System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
  ASP.new_aspx.Page_Load(Object sender, EventArgs e) +4344
  System.Web.UI.Control.OnLoad(EventArgs e) +67
  System.Web.UI.Control.LoadRecursive() +35
  System.Web.UI.Page.ProcessRequestMain() +750
Avatar billede snepnet Nybegynder
27. september 2004 - 21:57 #24
har du et id på tabellen som er unik nøgle, og ikke autoinkrementerende ?
ellers prøv med
int.Parse(Request["allday"]);
Om ikke andet, så får du en anden fejl hvis den ikke kan konverteres til et tal ;o)
Avatar billede larsny Nybegynder
27. september 2004 - 22:00 #25
okay det hjalp...
vidste ikke man skulle konvertere til et tal først
Avatar billede snepnet Nybegynder
09. oktober 2004 - 15:38 #26
hej larsny....
gammel glemt sag her kan jeg se :o)
jeg smider et svar hvis du kunne bruge det til noget.
mvh
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