Estoy procesando los elementos que los usuarios han seleccionado de una vista de cuadrícula y realizando una operación de inserción de correo electrónico y base de datos.Obteniendo la ID del registro recién insertado?
Cuando el usuario selecciona un botón, el código siguiente toma información de la vista de cuadrícula, crea un nuevo pedido en la tabla de pedidos y crea nuevas entradas en la tabla de transacciones.
¿Cómo puedo obtener la última identificación insertada si uso este método para insertar un registro? ¿Recomendarías un enfoque diferente a este simple problema?
protected void btnOrder_Click(object sender, EventArgs e)
{
double Total = 0;
string MailFrom = "[email protected]";
string MailTo = "[email protected]";
string MailSubject = "Online Order";
string MailCC = "";
string MailBCC = "";
string MailReplyTo = "";
string MailBody = "";
TextBox ItmCostCode = (TextBox)form1.FindControl("txtCostCode");
foreach (GridViewRow gvr in GridView1.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("ItemSelect");
Label ItmTotal = (Label)gvr.FindControl("ItmTotal");
Label ItmPrice = (Label)gvr.FindControl("ItmPrice");
Label ItmName = (Label)gvr.FindControl("lblName");
TextBox ItmQty = (TextBox)gvr.FindControl("ItmQty");
TextBox ItmID = (TextBox)gvr.FindControl("lblItemID");
//Add entry to Order Table
SqlDataSource2.InsertParameters.Add("OrderDate", DateTime.Now.ToString("MMMM dd, yyyy"));
SqlDataSource2.InsertParameters.Add("OrderTotal", "0");
SqlDataSource2.InsertParameters.Add("OrderAccount", "name");
SqlDataSource2.InsertParameters.Add("OrderCostCentre", ItmCostCode.Text);
SqlDataSource2.Insert();
//TODO: GET ORDERID HERE TO USE BELOW:
if (cb.Checked)
{
double Price = Convert.ToDouble(ItmPrice.Text);
double Qty = Convert.ToDouble(ItmQty.Text);
Total = Price * Qty;
OrderTotal = OrderTotal + Total;
MailBody = MailBody + "Item: "+ItmName.Text+" Quantity: "+ItmQty.Text+" Total: "+ItmTotal.Text+"\n\r";
//Add entry to Transaction Table
SqlDataSource3.InsertParameters.Add("ItemID", ItmID.Text);
SqlDataSource3.InsertParameters.Add("OrderID",);
SqlDataSource3.InsertParameters.Add("Price", ItmPrice.Text);
SqlDataSource3.Insert();
}
//TODO: Update Order table with OrderTotal
}
string strOrderTotal = OrderTotal.ToString();
MailBody = MailBody+"Order Total: " + strOrderTotal+"\n\r";
MailBody = MailBody + "Cost Code: " + ItmCostCode.Text;
MailService.Service1 Mailer = new MailService.Service1();
Mailer.SendMail("Text", MailFrom, MailTo, MailCC, MailBCC, MailSubject, MailBody, MailReplyTo);
}
Eso es lo que he estado leyendo, pero no estoy seguro de cómo crear directamente mi propia declaración de inserción: S – Kolten
@Kolten; He editado y pegado algunos enlaces por tu ayuda. –
+1 para los enlaces, aunque me gustaría darle más: ^) – Katia