Hi
I have been converted my generic list to a datatable, but something is wrong because is empty.
Is my conversion right? How do I set the session to the datatable, so it know where to find the values??
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();
cmd.Parameters.Add("@fk_ordre", SqlDbType.Int).Value = orderId;
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;
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);
}
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");
}
Hope someone could help me.
/Tina