У меня есть представление сведений, которое прилагается к источнику данных sql. Когда новый рабочий заказ вставлен, я отправляю электронное письмо. Прямо сейчас есть некоторая проблема с моей программой, и пользователь не может вставить данные из моего приложения, но письмо по-прежнему отправляется, предполагая, что данные вставлены., даже если детали просмотра вставки не удается, приложение отправляет электронное письмо
Это мой подробности Просмотреть Inserted Метод:
protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
if (successfull == true && Page.IsValid && e.AffectedRows ==1)
{
//TextBox TextBoxWorkOrderNumber = (TextBox)(DetailsView1.FindControl("TextBox11"));
TextBox TextBoxRequestor = (TextBox)(DetailsView1.FindControl("TextBox3"));
TextBox TextBoxDate = (TextBox)(DetailsView1.FindControl("TextBox1"));
//TextBoxDate.Text = DateTime.Now.ToShortDateString();
TextBox TextBoxDepartment = (TextBox)(DetailsView1.FindControl("TextBox4"));
TextBox TextBoxCompletionDate = (TextBox)(DetailsView1.FindControl("TextBox16"));
TextBox TextBoxMachineDescription = (TextBox)(DetailsView1.FindControl("TextBox5"));
TextBox TextBoxMachineLocation = (TextBox)(DetailsView1.FindControl("TextBox6"));
TextBox TextBoxWorkRequired = (TextBox)(DetailsView1.FindControl("TextBox7"));
// DropDownList status = (DropDownList)(DetailsView1.FindControl("DropDownList2"));
TextBox TextBoxStatus = (TextBox)(DetailsView1.FindControl("TextBox12"));
TextBoxStatus.Text = "Open";
DropDownList list = (DropDownList)(DetailsView1.FindControl("DropDownList1"));
TextBox9.Text = list.SelectedValue;
DropDownList lists = (DropDownList)(DetailsView1.FindControl("DropDownList2"));
TextBox14.Text = lists.SelectedValue;
if (TextBoxRequestor.Text.Length <= 0)
{
TextBoxRequestor.Text = "Not Applicable";
}
if (TextBox14.Text.Length <= 0)
{
TextBoxDepartment.Text = "Not Provided";
}
if (TextBoxCompletionDate.Text.Length <= 0)
{
TextBoxCompletionDate.Text = "Not Provided";
}
if (TextBoxMachineDescription.Text.Length <= 0)
{
TextBoxMachineDescription.Text = "Not Provided";
}
if (TextBoxMachineLocation.Text.Length <= 0)
{
TextBoxMachineLocation.Text = "Not Provided";
}
if (TextBoxWorkRequired.Text.Length <= 0)
{
TextBoxWorkRequired.Text = "Not Provided";
}
if (TextBox9.Text == "Safety" && e.AffectedRows==1)
{
{
bool isLocal = HttpContext.Current.Request.IsLocal;
if (isLocal == true)
{
string id = TextBox13.Text.ToString();
System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();
mm.From = new System.Net.Mail.MailAddress("[email protected]");//who send
mm.To.Add(new System.Net.Mail.MailAddress("[email protected]"));
//[email protected]
mm.Subject = "WorkOrders Type Safety";
mm.Body = "DO NOT REPLY TO THIS EMAIL" + "<br><br/>" + "WorkOrderNumber"
+ ": " + "<a href=\"http://localhost:49695/SafetyReport.aspx?WorkOrderNum=" + TextBox13.Text + "\">"
+ TextBox13.Text + "</a>" + "<-Click on the Work Order Number For Report"
+ "<br><br/>" + "WorkOrderNumber" + ": " +
"<a href=\"http://localhost:49695/Safety.aspx?WorkOrderNum=" +
TextBox13.Text + "\">" + TextBox13.Text + "</a>" +
"<-Click on this Work Order Number To Enter Data" +
"<br><br/>" + "Requestor" + ": " + TextBoxRequestor.Text +
"<br><br/>" + "Date" + ": " + TextBoxDate.Text +
"<br><br/>" + "Department" + ": " + TextBox14.Text +
"<br><br/>" + "Machine Description" + ": " +
TextBoxMachineDescription.Text + "<br><br/>" +
"Machine Location" + ": " +
TextBoxMachineLocation.Text + "<br><br/>" +
"Work Required" + ": " + TextBoxWorkRequired.Text + "<br><br/>"
mm.IsBodyHtml = true;
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.Host = ConfigurationManager.AppSettings["smtpServer"];
client.Send(mm);
captureuseremail();
}
}
}
}
я вижу DetailsView1_Item Установка, как я могу проверить, если это вставка в базу данных SQL ?? если вставка прошла успешно, мне нравится устанавливать логическое значение в значение true, а если true, то выполнить Details_View1 Вставить и отправить письмо еще раз отменить вставку.
Я также использую кнопку вставки, которая поставляется с подробным представлением. , пожалуйста, запросите у меня дополнительный код, если вы смутили, и я бы более чем счастливо его предоставил.
пожалуйста, помогите :(
Добавлен дополнительный код:.
INSERT INTO Master(Requestor, Date, Department, CompletionDate, MachineDescription,
MachineLocation, [Type of Work Order], [Work Required], Status)
VALUES (@Requestor, @Date, @Department, @CompletionDate,
@MachineDescription, @MachineLocation, @Type_of_Work_Order,
@Work_Required, @Status); SET @NewId = Scope_Identity()
я просто логическое значение преуспевающим; который я установлен в истинное значение в конце метода Item_Inserting()
когда пользователь нажимает кнопку «Отправить» на представлении деталей, которое является ничем иным, кроме вставки кнопки команды, тогда код попадает на элемент item_inserting, принимает все значение Item_Inserting o е детали просмотра:
защищен недействительным DetailsView1_ItemInserting (объект отправителя, DetailsViewInsertEventArgs е) {
if (Page.IsValid)
{
//TextBox TextBoxWorkOrderNumber = (TextBox)(DetailsView1.FindControl("TextBox11"));
TextBox TextBoxRequestor = (TextBox)(DetailsView1.FindControl("TextBox3"));
TextBox TextBoxDate = (TextBox)(DetailsView1.FindControl("TextBox1"));
//TextBoxDate.Text = DateTime.Now.ToShortDateString();
TextBox TextBoxDepartment = (TextBox)(DetailsView1.FindControl("TextBox4"));
TextBox TextBoxCompletionDate = (TextBox)(DetailsView1.FindControl("TextBox16"));
TextBox TextBoxMachineDescription = (TextBox)(DetailsView1.FindControl("TextBox5"));
TextBox TextBoxMachineLocation = (TextBox)(DetailsView1.FindControl("TextBox6"));
TextBox TextBoxWorkRequired = (TextBox)(DetailsView1.FindControl("TextBox7"));
// DropDownList status = (DropDownList)(DetailsView1.FindControl("DropDownList2"));
TextBox TextBoxStatus = (TextBox)(DetailsView1.FindControl("TextBox12"));
TextBoxStatus.Text = "Open";
DropDownList list = (DropDownList)(DetailsView1.FindControl("DropDownList1"));
TextBox9.Text = list.SelectedValue;
DropDownList lists = (DropDownList)(DetailsView1.FindControl("DropDownList2"));
TextBox14.Text = lists.SelectedValue;
if (TextBoxRequestor.Text.Length <= 0)
{
TextBoxRequestor.Text = "Not Applicable";
}
if (TextBox14.Text.Length <= 0)
{
TextBoxDepartment.Text = "Not Provided";
}
if (TextBoxCompletionDate.Text.Length <= 0)
{
TextBoxCompletionDate.Text = "Not Provided";
}
if (TextBoxMachineDescription.Text.Length <= 0)
{
TextBoxMachineDescription.Text = "Not Provided";
}
if (TextBoxMachineLocation.Text.Length <= 0)
{
TextBoxMachineLocation.Text = "Not Provided";
}
if (TextBoxWorkRequired.Text.Length <= 0)
{
TextBoxWorkRequired.Text = "Not Provided";
}
successfull = true;
}
else
{
e.Cancel = true;
successfull = false;
}
}
Это где фактически вставка происходит, его мой SqlDataSource:
** все значения от item_inserting вставляются здесь с идентификационным значением **
protected void RequestorSource_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
if (successfull == true)
{
try
{
int newid = (int)e.Command.Parameters["@NewId"].Value;
TextBox13.Text = newid.ToString();
}
catch
{
successfull = false;
}
if (e.AffectedRows == 1 && successfull == true)
{
successfull = true;
}
else
{
successfull = false;
}
}
else
{
successfull = false;
}
}
проблема в электронной почте по-прежнему когда я останавливаю программу, как я могу создать плохую вставку, как будто я хочу, чтобы она не сработала, что происходит с пользователем. Я не могу воссоздать проблему, например, я попытался добавить новое поле в инструкцию insert, но сделал не дать ему никаких значений и ошибки, которые он выбросил, было больше столбцов, чем значения.
Это картина из моих деталей просмотра:
** весь код .cs в http://pastebin.com/6VC6FZK7 и код .aspx в http://pastebin.com/QhjWNNt0 ** надеюсь, что это помогает немного.
Пожалуйста, покажите код, который генерирует вставку и заполняет переменную 'successl' – Matthew
Я попытался отформатировать ваш код, но что-то не так или нет. После 'if (TextBox9.Text ==" Безопасность ")' есть два '' '' и '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Обязательно '') –
@MatthewVerstraete Я добавил код, который вы попросили приятеля – ExpertWannaBe