Hi
When a user order some fruits, he gets to a new page were the inputs is standing. So the user can se what the user have been order and then he could do a confirmation with the contact information.
Before the user is insert the contact information, the user have a choice to make some other options to put to the order.
And when he click on the button the users order information, options and the fruit order could be in the database.
The bekraeft.aspx.cs
public ValgtFrugt frugtKurv;
public ValgtGroent groentKurv;
public ValgtDeli deliKurv;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["ValgteFrugter"] != null)
{
List<ValgtFrugt> valgteFrugter = (List<ValgtFrugt>)Session["ValgteFrugter"];
foreach (ValgtFrugt frugt in valgteFrugter)
{
Label1.Text += string.Format("{0} ({1} stk.)<br />", frugt.FrugtNavn, frugt.Antal);
}
List<ValgtGroent> valgteGroent = (List<ValgtGroent>)Session["ValgteGroent"];
foreach (ValgtGroent groent in valgteGroent)
{
Label1.Text += string.Format("{0} ({1} stk.)<br />", groent.GroentNavn, groent.AntalGroent);
}
}
else
{
Label1.Text = Session["standard"].ToString();
}
}
protected void Button_putikurv_Click(object sender, EventArgs e)
{
int totalvaerdi = 0;
List<ValgtDeli> valgteDeli = new List<ValgtDeli>();
foreach (RepeaterItem item in VisDeli.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
TextBox TextBox_deli = item.FindControl("TextBox_deli") as TextBox;
if (!string.IsNullOrEmpty(TextBox_deli.Text))
{
opretOrdre();
}
string DeliNavn = TextBox_deli.Attributes["DeliNavn"];
if (TextBox_deli.Text != null)
{
if (string.IsNullOrEmpty(TextBox_deli.Text))
{
TextBox_deli.Text = "0";
}
}
int enkeltDeliAntal = int.Parse(TextBox_deli.Text);
totalvaerdi += (enkeltDeliAntal);
if (enkeltDeliAntal > 0)
{
ValgtDeli frugtenDerskalTilfoejes = new ValgtDeli();
frugtenDerskalTilfoejes.DeliNavn = DeliNavn;
frugtenDerskalTilfoejes.Antal = enkeltDeliAntal;
valgteDeli.Add(frugtenDerskalTilfoejes);
}
}
if (totalvaerdi > 0)
{
Session["ValgteDeli"] = valgteDeli;
opretOrdre();
}
}
}
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;
DataTable dt = (DataTable)Session["ValgteFrugter"];
DataTable dt1 = (DataTable)Session["ValgteGroent"];
DataTable dt2 = (DataTable)Session["ValgteDeli"];
DataTable dtAll = new DataTable();
dtAll = dt.Copy();
dtAll.Merge(dt1, true);
dtAll.Merge(dt2, 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["FrugtNavn"];
cmd.Parameters["@fk_deli_id"].Value = row["DeliNavn"];
cmd.Parameters["@fk_groent_id"].Value = row["GroentNavn"];
cmd.Parameters["@Antal"].Value = row["Antal"];
cmd.ExecuteNonQuery();
}
conn.Close();
Session.Abandon();
Response.Redirect("tak.aspx");
}
protected void VisDeli_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
TextBox TextBox_deli = e.Item.FindControl("TextBox_deli") as TextBox;
if (TextBox_deli == null) return;
TextBox_deli.Attributes.Add("DeliID", string.Format("{0}", ((DataRowView)(e.Item.DataItem)).Row["deli_id"]));
TextBox_deli.Attributes.Add("DeliNavn", string.Format("{0}", ((DataRowView)(e.Item.DataItem))["deli_navn"]));
}
}
When I click on the button, I get this Error:
Unable to cast object of type 'System.Collections.Generic.List`1[ValgtFrugt]' to type 'System.Data.DataTable
Line 164:
Line 165:
Line 166: DataTable dt = (DataTable)Session["ValgteFrugter"];
Line 167: DataTable dt1 = (DataTable)Session["ValgteGroent"];
Line 168: DataTable dt2 = (DataTable)Session["ValgteDeli"];
Hope someone could help me?
/Tina