取消时,详细信息视图的插入事件中没有代码运行



我在数据绑定的 DetailsView 的 OnInserting-Event 中执行一些自定义验证,并在需要时取消该操作。

现在我想给用户一个反馈,为什么没有操作插入并尝试了很多东西,如自定义消息框,使标签可见等等。

但是在这种情况下,没有代码像往常一样做一些事情。在带有取消的行之前或之后(e.cancel = true(。代码正在调试,没有错误,但没有任何效果。

我是不是走错路了?类似事情的通常工作流程是什么?

我希望有人能告诉我我做错了什么。

(未执行的相关部分在"//THIS PART:"下面(

protected void DetailsView2_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
// E-Mail auf Existenz prüfen, wenn existiert abbrechen und Nachricht
string email = e.Values["email"].ToString();
int vorkommenDB = 0;
string abfrage = "select count(*) from [user] where email = @mail";
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringLOKALverband"].ConnectionString))
{
using (SqlCommand command = new SqlCommand(abfrage, con))
{
command.Parameters.AddWithValue("@mail", email);
con.Open();
int.TryParse(command.ExecuteScalar().ToString(), out vorkommenDB);
con.Close();
}
}
if(vorkommenDB > 0)
{
// THIS PART:
myMessageBox.Show("Die E-Mail Adresse existiert schon in der Benutzer-Datenbank.rnBitte bearbeiten Sie den Datensatz mit der vorhandenen Adresse und legen ihn nicht neu an.");                
Label temp = (Label)((DetailsView)sender).FindControl("labelEmailDoppelt");
temp.Visible = true;
Response.Redirect("user.aspx?email=belegt");
e.Cancel = true;
}
// Passwort verschlüsseln und Parameter ersetzen
if (e.Values["passwort"] != null)
{
string passwortInsert = e.Values["passwort"].ToString();
string hashVonPasswort = mySHA1.SHA1HashStringForUTF8String(passwortInsert);
e.Values["passwort"] = hashVonPasswort;
}
}

在 ItemInserting 方法中,可以执行以下操作:

//credit to https://stackoverflow.com/questions/1841452/new-line-in-javascript-alert-box
//For javascript alert, I am putting in a \n instead of rn
string myScript = "n<script type="text/javascript" language="Javascript" id="EventScriptBlock">n";
myScript += "alert('Die E-Mail Adresse existiert schon in der Benutzer-Datenbank.\nBitte bearbeiten Sie den Datensatz mit der vorhandenen Adresse und legen ihn nicht neu an.');";
myScript += "nn </script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", myScript, false);

最新更新