2015-08-03 29 views
1

下面是我的代碼按鈕單擊文本框驗證。即文本框的IF值已經保存在數據庫中,然後顯示警報,否則正常按鈕事件應該起作用。爲此,我嘗試下面的代碼:在單擊asp時調用Ajax JQuery時CommandArgument,CommandName不會被執行:按鈕

Default.aspx頁面

<asp:Label ID="lblGuidId" runat="server" Text='<%# Bind("RequestID") %>'></asp:Label> 
<asp:TextBox ID="txtBarcodeNumber" runat="server" MaxLength="11" Width="230px" Text='<%# Bind("BarcodeNo") %>' Display="None"></asp:TextBox> 

<asp:Button ID="btnBar" runat="server" Text="Save" CommandName="Update" 
OnClientClick="EnableDdlCompany();saveButtonClick();" 
CommandArgument="Save" return false;"/> 

阿賈克斯jQuery代碼:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("[id*=btnBar]").bind("click", function() { 

       var chk = {}; 
       chk.requestID = $("[id*=lblGuidId]").text(); 
       alert(chk.requestID); 
       chk.barCode = $("[id*=txtBar]").val(); 
       alert(chk.barCode); 

       $.ajax({ 
        type: 'POST', 
        url: "ChatBoxDemo.aspx/SaveUser", 
        data: '{chk: ' + JSON.stringify(chk) + '}', 
        contentType: 'application/json; charset=utf-8', 
        dataType: 'json', 
        success: function (data) { 

         alert(JSON.stringify(data)); 

         var val = data.d; 
         alert(val); 

         if (val == true) { 
          alert("Barcode No. alredy exist"); 
         } 
         else { 
          //normal function 
         } 
        }, 
        error: function (data) { 
         alert(data.responseText); 
        }, 
       }); 
       return false; 
      }); 
     });  
    </script> 

C#代碼:

public static bool IsValidBarcodeTest(Guid? requestID, string barCode) 
    { 
     bool result = false; 

     string strcon = ConfigurationManager.ConnectionStrings["MasterDB"].ConnectionString; 
     SqlConnection con = new SqlConnection(strcon); 

     SqlCommand cmd = new SqlCommand("Invoice.usp_tbl_Request_Select_CheckDuplicateBarcode_Test", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@RequestID", requestID); 
     cmd.Parameters.AddWithValue("@BarcodeNo", barCode); 
     cmd.Connection = con; 
     con.Open(); 
     result = Convert.ToBoolean(cmd.ExecuteScalar()); 
     con.Close(); 

     return result; 
    } 

    public class Check 
    { 
     public Check() { } 

     private Guid? requestID; 
     private string barCode; 

     public Guid? RequestId 
     { 
      get { return requestID; } 
      set { requestID = value; } 
     } 

     public string BarCode 
     { 
      get { return barCode; } 
      set { barCode = value; } 
     } 
    } 

    [WebMethod] 
    [ScriptMethod] 
    public static bool SaveUser(Check chk) 
    { 
     bool a = false; 
     a = IsValidBarcodeTest(chk.RequestId, chk.BarCode); 
     return a; 
    } 

當我點擊按鈕(btnBar),這阿賈克斯JQuery的工作,但這個驗證檢查後,我想按鈕應執行其他的事件,如CommandArgument的CommandName的OnClientClick
但這些事件不會被解僱時,我如果條件轉到其他部分。
請建議我在代碼中更改哪些內容,以便其按預期工作。
請注意,我無法更改在按鈕上定義的事件。我是非常新的在asp.net
在此先感謝。

回答

0

你永遠不會爲btnBar定義一個OnClick服務器端事件。目前它只執行客戶端代碼,並且永遠不會訪問服務器端代碼。如果你希望它根據你的jQuery調用的結果執行,那麼你將會做類似__doPostBack(「btnBar」);