我在数据绑定的DetailsView的OnInserting-Event中执行一些自定义验证,并在需要时取消该操作。
现在,我想向用户提供反馈,为什么不操作Insert并尝试了很多类似Custom-Message-Boxes的操作,使Labels可见等。
但是在这种情况下,没有Code能够像往常一样做事。取消行之前或之后(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.\r\nBitte 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;
}
}
答案 0 :(得分:0)
在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 \r\n
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 += "\n\n </script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", myScript, false);