2016-05-23 91 views
0

我與asp.net工作這個值設置爲文本框webmethed我希望得到一個返回值,並將其設置爲文本框無法從asp.net(WEBMETHOD)值,並使用jquery

<asp:TextBox ID="TxtSearch" runat="server" placeholder="Search Order" Width="150px"></asp:TextBox> 

<input type="submit" name="btn_search" id="btn_search" value="Search"> 

時我正在點擊提交按鈕它去WEBMETHOD但我不無法從中獲取數據,並將其設置爲文本框

<asp:TextBox ID="TxtOrder" runat="server" Width="150px"></asp:TextBox> 

我的方法如下

[WebMethod] 
     public static List<Search> Search_Order(string TxtSearch) 
     { 
      db_class Connstring = new db_class(); 

      try 
      { 

       DataTable dt = new DataTable(); 
       List<Search> SearchItem = new List<Search>(); 

       dt = Connstring.SqlDataTable(@"SELECT  OrderNo, Date, CustomerName, ProductID, Price, Total, Quantity, Product_Name FROM Order_Details WHERE OrderNo='" + TxtSearch + "'"); 

       foreach (DataRow dtrow in dt.Rows) 
       { 
        Search SearchDeatils = new Search(); 
        SearchDeatils.Product_Name = dtrow["Date"].ToString(); 
        SearchDeatils.ProductID = dtrow["CustomerName"].ToString(); 
        SearchDeatils.Product_Name = dtrow["OrderNo"].ToString(); 
        SearchItem.Add(SearchDeatils); 
       } 

       return SearchItem; 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
     } 
     public class Search  //For Order search 
     { 
      public string Date { get; set; } 
      public string CustomerName { get; set; } 
      public string OrderNo { get; set; } 
      public string ProductID { get; set; } 
      public string Price { get; set; } 
      public string Total { get; set; } 
      public string Quantity { get; set; } 
      public string Product_Name { get; set; } 
     } 
給出

而且劇本是

$(window).load(function() { 

       $("#btn_search").live('click', function() { 
        $.ajax(
         { 
          type: "POST", 
          url: "MasterDetails.aspx/Search_Order", 
          data: "{TxtSearch: '" + $('#TxtSearch').val() + "'}", 
          contentType: "application/json; charset=utf-8", 
          dataType: "json", 
          success: function (Result) { 
          alert('Get Data from DB');        
          $.each(Result.d, function() 
          { 
          document.getElementById('#TxtOrder').value = value.OrderNo;         
          }); 
          } 
         }); 
       }); 

     }); 
+0

這是因爲,asp.net控制,當他們在渲染ID將改變DOM。因此,請使用上述答案中的一個選項。 – Krishna

回答

0

幾點需要注意:

  1. 你需要在ASP.NET的情況下使用clientidmode=static在HTML服務器控件的情況下和ClientIDMode=Static如果你想使用的控制客戶端的ID。這是因爲客戶端ID和服務器ID不一定是ASP.NET

    <asp:TextBox ID="TxtOrder" runat="server" Width="150px" ClientIDMode="Static" ></asp:TextBox> 
    
  2. 同樣當你正在做以下幾點:

    $.each(Result.d, function(){ 
        document.getElementById('#TxtOrder').value = value.OrderNo;         
    }); 
    

    你得到相同的輸入元素(與文本框。id=TxtOrder一而再,再而賦予它不同的值

  3. 此外,value.OrderNo是我想在函數中未定義而是做這樣的事情:

    $.each(Result.d, function (key, value){ 
        document.getElementById('#TxtOrder').value = value.OrderNo;         
    }); 
    

    作爲一個側面說明,如果你已經使用jQuery,該jQuery的方式做這將是$("#TxtOrder").val(value.OrderNo);

+0

是我的方法好! –

+0

執行上述更改並查看。如有問題,請告知我。 – Chintan

+0

我在文本框中輸入了nothnig(TxtOrder) –

相關問題