我有一个界面来创建一个包含客户代码和客户名称的新客户,该客户将被插入到Customer表中。表中的代码不能重复。我想要做的是如果在客户代码区域中输入了重复的代码并提交,则在网页上显示错误消息。我怎么能这样做?以下是我的代码,谢谢!
protected void btnOk_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.CommandText = "dbo.InsertCustomer";
cmd.Parameters.AddWithValue("@CCode", txtCustomerCode.Text);
cmd.Parameters.AddWithValue("@CName", txtRemark.Text);
try
{
conn.Open();
cmd.ExecuteNonQuery();
string message = "New Customer Created!";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(message);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
conn.Dispose();
}
}
答案 0 :(得分:0)
您可以为邮件设置标签。像。的东西。
if(ex.Message.ToString().Contains("Duplicate"))
this.lblMessage.Text = "Code "+txtCustomerCode.Text+" is already taken."
else
this.lblMessage.Text = msg;
不确定要查找的确切文字。你也不会重新抛出异常。
答案 1 :(得分:0)
使用ClientScript.RegisterClientScriptBlock
继续您正在使用的路线如果您已编写过程以在发生重复时导致异常,则可以将其放入catch块中
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "popup", "alert('Customer code already exists !!');", true);
引用我的另一个post来解决与您类似的问题