取消

时间:2018-08-21 15:12:45

标签: asp.net webforms detailsview

我在数据绑定的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;
        }
    }

1 个答案:

答案 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);