Hur kan jag lösa detta? Förslagsvis så hämtar du de data du vill visa från databasen med koppling till den order du ska hantera. Hur långt är ett snöre? Nä, allvarligt, utan någon mer information är det omöjligt att svara på. Rent generellt får du plocka fram din "orderdetaljer" och maila med System.Net.Mail (se mer om hur det går till på http://www.systemnetmail.com/). hehe hur långt är ett snöre:) Nuskajagse om jaglyckas förklara detta. Det jagvill göra är att hämta alla rader i databasen, det är inga bekymmer, men jagvet inte hur jagskriver foreach till detta. Som sagt var du verkar bara läsa in en rad med orderdetaljer.Mail med innehåll från databas?
Jag har gjort en webbutik, allt fungerar som det ska, men hur kan jag hämta ut alla orderdetaljer och skicka i ett mail till kunden?Sv: Mail med innehåll från databas?
Sv: Mail med innehåll från databas?
/JohanSv:Mail med innehåll från databas?
Såg att jag yttryckte mej dumt.
Det jag menade var att jag inte vet hur jag ska skriva foreach
Jag återkommer när jag kommer hem och har koden.Sv: Mail med innehåll från databas?
Har försökt så här,men det går inte.
<code>
orderDet = orderDB.GetOrderDetails(_orderID);
foreach (object orderDetail in orderDet)
{
str.Append(orderDetail.Color + "<br />");
}
// hämtas fråndatabasen...
public OrderDetails GetOrderDetails(int _orderID)
{
SqlConnection conn = new SqlConnection(printConnection);
SqlCommand cmd = new SqlCommand("getOrderDetailsHistory", conn);
cmd.CommandType = CommandType.StoredProcedure;
// SQL parameters...
cmd.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int));
cmd.Parameters["@orderID"].Value = _orderID;
try
{
conn.Open();
SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.SingleRow);
rd.Read();
OrderDetails order = new OrderDetails((string)rd["transfer"], (string)rd["color"], (string)rd["clothes"], (string)rd["size"], (int)rd["orderID"], (int)rd["orderDetailID"], (int)rd["quantity"], (double)rd["discount"], (double)rd["price"], (double)rd["tot"], (double)rd["subTot"]);
rd.Close();
return order;
}
catch (Exception err)// Error ends up here...
{
throw new Exception(err.Message.ToString());
}
finally
{
conn.Close();// Close the connection...
}
}
</code>Sv:Mail med innehåll från databas?
Ser ut som att du bara hämtar ut en rad ur ordern
bara en rd.Read();
gör en while-slinga så länge du kan köra rd.Read(), och lägg
till varje OrderDetails-objekt till en List<OrderDetails>
Då bör du kunna få ut dom individuella raderna med
<code>
foreach (OrderDetails orderDetail in orderDet)
{
...
</code>
orderDetail är alltså en OrderDetails
och orderDet är en lista med OrderDetails ( List<OrderDetails> )Sv:Mail med innehåll från databas?
Jag förmodar att "OrderDetails" är någon typ av kollektion bestående av ett antal OrderDetail, där OrderDetail innehåller information från en orderrad.
I ditt fall skulle det su ut ungefär så här (blandning av din kod och lite pseudokod).
<code>
public OrderDetails GetOrderDetails(int _orderID)
{
SqlConnection conn = new SqlConnection(printConnection);
SqlCommand cmd = new SqlCommand("getOrderDetailsHistory", conn);
cmd.CommandType = CommandType.StoredProcedure;
// SQL parameters...
cmd.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int));
cmd.Parameters["@orderID"].Value = _orderID;
try
{
conn.Open();
SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.SingleRow);
//Skapa en ny kollektion "OrderDetails" som kommer att innehålla ett antal orderrader (OrderDetail)
OrderDetails orderDetails = new orderDetails;
while (rd.Read()) //Läs så länge det finns något att läsa
{
//Skapa en ny orderDetail
OrderDetail detail = new OrderDetail((string)rd["transfer"], (string)rd["color"], (string)rd["clothes"], (string)rd["size"], (int)rd["orderID"], (int)rd["orderDetailID"], (int)rd["quantity"], (double)rd["discount"], (double)rd["price"], (double)rd["tot"], (double)rd["subTot"]);
//Lägg till den nya detail till OrderDetails-kollektionen
OrderDetails.Add(detail);
}
rd.Close();
Returnera OrderDetail-kollektionen
return orderDetails;
}
catch (Exception err)// Error ends up here...
{
throw new Exception(err.Message.ToString());
}
finally
{
conn.Close();// Close the connection...
}
}
</code>