Avatar billede tinaw25 Nybegynder
16. oktober 2013 - 11:13 Der er 1 løsning

Min datatable er tom, kan virkelig ikke se hvad jeg gør forkert?

Hej

Jeg har convert en Generic List til en datatable, og alt information der er i mine sessions kommer også med.

  private void opretOrdre()
    {



        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "INSERT INTO ordre (dato, navn, efternavn, mobil, adresse, mail, postnr, bynavn) VALUES(GETDATE(), @navn, @efternavn, @mobil, @adresse, @mail, @postnr, @bynavn); SELECT SCOPE_IDENTITY()";

        cmd.Parameters.Add("@navn", SqlDbType.VarChar).Value = TextBox_navn.Text;
        cmd.Parameters.Add("@efternavn", SqlDbType.VarChar).Value = TextBox_efternavn.Text;
        cmd.Parameters.Add("@mobil", SqlDbType.VarChar).Value = TextBox_mobil.Text;
        cmd.Parameters.Add("@adresse", SqlDbType.VarChar).Value = TextBox_adresse.Text;
        cmd.Parameters.Add("@mail", SqlDbType.VarChar).Value = TextBox_mail.Text;
        cmd.Parameters.Add("@postnr", SqlDbType.VarChar).Value = TextBox_postnr.Text;
        cmd.Parameters.Add("@bynavn", SqlDbType.VarChar).Value = TextBox_by.Text;


        conn.Open();
        object orderId = cmd.ExecuteScalar();
        conn.Close();

        //SÅ skal vi bruge de parametre der skal til for at kunne skrive til vore OrdrerLinier Tabel
        //Og evt. opdatere vores produkts lagerbeholdning
        //########################//
        //SÅ til vores ordrerlinier
        //fk_ordre - den fra object'et
        cmd.Parameters.Add("@fk_ordre", SqlDbType.Int).Value = orderId;
        //fk_produktId - fra session _kurv. Sættes nu til 0, den den skal ind i foreach løkken og få sin værdi.
        cmd.Parameters.Add("@fk_frugt_id", SqlDbType.Int).Value = 0;
        cmd.Parameters.Add("@fk_deli_id", SqlDbType.Int).Value = 0;
        cmd.Parameters.Add("@fk_groent_id", SqlDbType.Int).Value = 0;
        //Produkt antal - sammen som Id'et. Sættes til 0 og får værdi i løkken
        cmd.Parameters.Add("@Antal", SqlDbType.Int).Value = 0;
       

        cmd.Parameters.Add("@frugt_id", SqlDbType.VarChar).Value = 0;
        cmd.Parameters.Add("@deli_id", SqlDbType.VarChar).Value = 0;
        cmd.Parameters.Add("@groent_id", SqlDbType.VarChar).Value = 0;


        List<ValgtFrugt> valgteFrugter = (List<ValgtFrugt>)Session["ValgteFrugter"];

        var dataTable = new DataTable(Session["ValgteFrugter"].ToString());

 

dataTable.Columns.Add("FrugtID", typeof(int));
dataTable.Columns.Add("FrugtNavn", typeof(string));
        dataTable.Columns.Add("Antal", typeof(int));
        dataTable.Columns.Add("FrugtVaerdi", typeof(int));

        foreach (ValgtFrugt frugt in valgteFrugter)
{
    dataTable.Rows.Add(frugt.FrugtID, frugt.FrugtNavn, frugt.Antal, frugt.FrugtVaerdi);
}

        List<ValgtGroent> valgteGroent = (List<ValgtGroent>)Session["ValgteGroent"];
        var dataTable1 = new DataTable(Session["ValgteGroent"].ToString());

        dataTable1.Columns.Add("GroentID", typeof(int));
        dataTable1.Columns.Add("GroentNavn", typeof(string));
        dataTable1.Columns.Add("AntalGroent", typeof(int));
        dataTable1.Columns.Add("GroentVaerdi", typeof(int));

        foreach (ValgtGroent groent in valgteGroent)
        {
            dataTable1.Rows.Add(groent.GroentID, groent.GroentNavn, groent.AntalGroent, groent.GroentVaerdi);
        }
        List<ValgtDeli> valgteDeli = (List<ValgtDeli>)Session["ValgteDeli"];
        var dataTable2 = new DataTable(Session["ValgteDeli"].ToString());

        dataTable2.Columns.Add("DeliID", typeof(int));
        dataTable2.Columns.Add("DeliNavn", typeof(string));
        dataTable2.Columns.Add("Antal", typeof(int));
     
        foreach (ValgtDeli delikatesse in valgteDeli)
        {
            dataTable2.Rows.Add(delikatesse.DeliID, delikatesse.DeliNavn, delikatesse.Antal);
        }


Men ligeså snart jeg kommer ned til denne her bid kode, er værdien null.

DataTable dtAll = new DataTable();
        dtAll = dataTable.Copy();
        dtAll.Merge(dataTable1, true);
        dtAll.Merge(dataTable2, true);

                conn.Open();

        foreach (DataRow row in dtAll.Rows)
        {
            cmd.CommandText = @"INSERT INTO ordre_linie
                                (fk_ordre_id, fk_frugt_id, fk_deli_id, fk_groent_id, antal)
                                VALUES (@fk_ordre, @fk_frugt_id, @fk_deli_id, @fk_groent_id, @Antal)";

            cmd.Parameters["@fk_frugt_id"].Value = row["FrugtID"];
            cmd.Parameters["@fk_deli_id"].Value = row["DeliID"];
            cmd.Parameters["@fk_groent_id"].Value = row["GroentID"];
            cmd.Parameters["@Antal"].Value = row["Antal"];

           

            cmd.ExecuteNonQuery();
        }
     
        conn.Close();
        Session.Abandon();
        Response.Redirect("tak.aspx");
Avatar billede tinaw25 Nybegynder
16. oktober 2013 - 16:40 #1
løst det
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