我有一个 ASP.NET C# 网页,它在更新模式下有一个 DetailsView。用户输入一些内容并按下按钮来更新数据库中的该记录。
我想添加一个运行快速存储过程并获取返回值的 JavaScript。如果该返回值小于 1,那么我希望继续更新 DetailsView。如果该值大于 1,那么我想停止更新并显示错误消息:'ERROR:Greater than 1'。
一如既往,我感谢任何帮助。
本
我有一个 ASP.NET C# 网页,它在更新模式下有一个 DetailsView。用户输入一些内容并按下按钮来更新数据库中的该记录。
我想添加一个运行快速存储过程并获取返回值的 JavaScript。如果该返回值小于 1,那么我希望继续更新 DetailsView。如果该值大于 1,那么我想停止更新并显示错误消息:'ERROR:Greater than 1'。
一如既往,我感谢任何帮助。
本
您可以调用 Web 服务或页面方法来执行数据库查询,并借助Ajax
.
在这里,您将找到与您想要的实现相同的答案:Run Stored Procedure with ajax
您可以使用Ajax and Jquery
来实现这一点。基本上你会在代码后面调用一个方法,你将在其中运行存储的过程并返回成功或错误消息
Jquery是:
$("input[id$='ButtonName']").click(function (e) {
$.ajax({
type: "POST",
url: "PageName.aspx/FunctionName",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d == 'Success') {
//do something
}
else if (msg.d == 'ERROR') {
//do something
}
}
});
e.preventDefault();
});
方法后面的代码是:
[System.Web.Services.WebMethod]
public static string FunctionName()
{
//run store proc and return success or error
}
我最终以迂回的方式解决了这个问题。这不是我理想的解决方案,但它的工作原理是一样的。
我最终把这段代码放在了我的 Page_Load 中。它从 QueryString 中获取用户代码,然后使用该用户代码运行 SQL 查询以获取单个值。如果该值大于 1,则页面重定向到错误页面。
同样,并不理想,但它可以达到目的。
protected void Page_Load(object sender, EventArgs e)
{
//Runs query to determine if returnValue is greater then 1 then redirects if true
SqlConnection sqlConnection1 = new SqlConnection("ConnectionString");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT COUNT(UID) FROM Table WHERE (USER = @USER)";
cmd.CommandType = CommandType.Text;
SqlParameter UserID = new SqlParameter("@USER", Request.QueryString["usr"]);
UserID.Direction = ParameterDirection.Input;
cmd.Parameters.Add(UserID);
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
int returnValue;
returnValue = Convert.ToInt32(cmd.ExecuteScalar());
sqlConnection1.Close();
if (returnValue > 0)
{
Response.Redirect("morethanone?usr=" + Request.QueryString["usr"]);
}
}