J'essaie d'insérer des données dans la base de données en utilisant détailsView insert commande. Et ça ne marche pas. Voici mon code derrière. J'ai réussi à insérer dans la page .aspx buti a quelques limitations, puisque j'ai besoin d'utiliser la ligne de la grille comme données aussi et je ne peux le faire que si je le fais dans la page aspx.cs.DetailsView Insérer derrière le code ne fonctionne pas
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
string Price;
string Item;
string PetitionType;
string Note;
string UserNameGV = (GridView1.SelectedRow.Cells[3].Text);
string InvoiceGV = (GridView1.SelectedRow.Cells[5].Text);
string CreatedDateGV = (GridView1.SelectedRow.FindControl("lblLocalTime") as Label).Text;
SearchTB.Text = UserNameGV + " " + InvoiceGV + " " + CreatedDateGV;
DateTime CreatedDate = Convert.ToDateTime(CreatedDateGV);
for (Int32 attempt = 1; ;)
{
using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RapidVisaConnectionString"].ConnectionString))
{
try
{
Price = ((TextBox)DetailsView1.Rows[1].FindControl("TextBox2")).Text;
Item = ((DropDownList)DetailsView1.Rows[1].FindControl("DropDownList2")).SelectedValue;
PetitionType = ((DropDownList)DetailsView1.Rows[1].FindControl("DropDownList3")).SelectedValue;
Note = ((TextBox)DetailsView1.Rows[1].FindControl("TextBox2")).Text;
con.Open();
string Sql = "INSERT INTO InvoiceDetail (Price, Item, PetitionType, Note, Paid, Quantity, Invoice, UserName, CreatedDate) VALUES (@Price, @Item, @PetitionType, @Note, @Paid, @Quantity, @Invoice, @UserName, @CreatedDate)";
SqlCommand cmd = new SqlCommand(Sql, con);
cmd.Parameters.AddWithValue("@Price", Price);
cmd.Parameters.AddWithValue("@Item", Item);
cmd.Parameters.AddWithValue("@PetitionType", PetitionType);
cmd.Parameters.AddWithValue("@Note", Note);
cmd.Parameters.AddWithValue("@Paid", 1);
cmd.Parameters.AddWithValue("@Quantity", 1);
cmd.Parameters.AddWithValue("@Invoice", InvoiceGV);
cmd.Parameters.AddWithValue("@UserName", UserNameGV);
cmd.Parameters.AddWithValue("@CreatedDate", CreatedDate);
cmd.ExecuteNonQuery();
return;
}
catch (SqlException sqlException)
{
// Increment Trys
attempt++;
// Find Maximum Trys
// Override the web.config setting of 4 for retrys for this method because we are getting time-out errors.
Int32 maxRetryCount = Int32.Parse(ConfigurationManager.AppSettings["ConnectionRetrys"]);
//Int32 maxRetryCount = 5;
// Throw Error if we have reach the maximum number of retries
if (attempt == maxRetryCount)
{
ErrorLog EL = new ErrorLog();
EL.WriteErrorWithSubjectNoWriteToDB("", "Error InvoiceDetail Max Retry");
//going to stop throwing an error because we are getting too many
//throw;
break;
}
// Determine if we should retry or abort.
if (!SQLUtilities.RetryLitmus(sqlException))
{
ErrorLog EL = new ErrorLog();
EL.WriteErrorWithSubjectNoWriteToDB("Insert Failed RetryLitmus for user " + UserName + ". Sql exception number " + sqlException.Number.ToString() + ". " + sqlException.ToString(), "Error InvoiceDetail Failed Litmus");
//going to stop throwing an error because we are getting too many
//throw;
break;
}
else
Thread.Sleep(SQLUtilities.ConnectionRetryWaitSeconds(4));
//Changed from default of 5 seconds to 3 seconds
//Thread.Sleep(SQLUtilities.ConnectionRetryWaitSeconds(attempt));
}
}
}
}
Voici le message d'erreur que je suis arrivé.
L'insertion n'est pas prise en charge par la source de données 'DetailsViewDS' à moins que la commande InsertCommand ne soit spécifiée. Le problème est que je ne veux pas ajouter InsertCommand dans la page aspx, seulement dans aspx.cs
Oui, voici le message. L'insertion n'est pas prise en charge par la source de données 'DetailsViewDS' sauf si InsertCommand est spécifié. Le problème est que je ne veux pas ajouter InsertCommand dans la page aspx, seulement dans aspx.cs – Ping
Duplication possible de [L'insertion n'est pas supportée par la source de données 'SqlDataSource1' sauf si InsertCommand est spécifié] (http://stackoverflow.com/questions/7283920/inserting-is-not-supported-par-data-source-sqldatasource1-à-moins-insertcommand) –
@M Adeel Khalid Je pense que je le mentionne déjà, je ne veux pas ajouter insertcommand dans aspx.page, seulement dans aspx.cs je expliquez pourquoi, car il y a quelques limitations dans mon code. – Ping