2013-03-13 68 views
-2

我有一個ASP.NET C#網頁,它在更新模式下具有DetailsView。用戶鍵入內容並按下按鈕以更新數據庫上的該記錄。基於存儲過程返回值的錯誤

我想添加一個運行快速存儲過程並獲取返回值的JavaScript。如果返回值小於1,那麼我希望我的DetailsView更新繼續。如果該值大於1,那麼我想停止更新並顯示錯誤消息:'錯誤:大於1'。

一如既往,我感謝任何幫助。

回答

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"]); 
     } 
    } 
1

您可以調用Web服務或頁面方法來執行數據庫查詢,並將結果與​​Ajax的幫助下返回到客戶端。

在這裏你會發現同樣的,只要你想在這裏實施了答案:Run Stored Procedure with ajax

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 
}