-2

更新モードの DetailsView を持つ ASP.NET C# Web ページがあります。ユーザーが何かを入力してボタンを押すと、データベース上のそのレコードが更新されます。

クイック ストアド プロシージャを実行して戻り値を取得する JavaScript を追加したいと考えています。その戻り値が 1 未満の場合、DetailsView の更新を続行したいと思います。値が 1 より大きい場合は、更新を停止してエラー メッセージ「ERROR:Greater than 1」を表示したいと考えています。

いつものように、私はどんな助けにも感謝します.

ベン

4

3 に答える 3

1

これを達成するために使用できますAjax and Jquery。基本的に、ストアド プロシージャを実行し、成功またはエラー メッセージを返すコード ビハインドでメソッドを呼び出します。

Jクエリは次のとおりです。

$("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 に答える
1

を使用して、Web サービスまたはページ メソッドを呼び出してデータベース クエリを実行し、結果をクライアント側に返すことができますAjax

ここで、ここで必要なのと同じ実装で答えを見つけることができます: Run Stored Procedure with ajax

于 2013-03-13T16:37:16.363 に答える
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 に答える