-2

我有一个 ASP.NET C# 网页,它在更新模式下有一个 DetailsView。用户输入一些内容并按下按钮来更新数据库中的该记录。

我想添加一个运行快速存储过程并获取返回值的 JavaScript。如果该返回值小于 1,那么我希望继续更新 DetailsView。如果该值大于 1,那么我想停止更新并显示错误消息:'ERROR:Greater than 1'。

一如既往,我感谢任何帮助。

4

3 回答 3

1

您可以调用 Web 服务或页面方法来执行数据库查询,并借助Ajax.

在这里,您将找到与您想要的实现相同的答案:Run Stored Procedure with ajax

于 2013-03-13T16:37:16.363 回答
1

您可以使用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 
}
于 2013-03-13T16:38:56.483 回答
0

我最终以迂回的方式解决了这个问题。这不是我理想的解决方案,但它的工作原理是一样的。

我最终把这段代码放在了我的 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"]);
        }
    }
于 2013-03-14T15:46:47.500 回答