无法从asp.net(Webmethod)获取值,并使用jquery将此值设置为textbox

时间:2016-05-23 15:48:01

标签: c# jquery asp.net

我正在使用asp.net webmethed我想获得一个返回值并将其设置为文本框

<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;                                 
                          });
                          }
                      });
               });

       });

1 个答案:

答案 0 :(得分:0)

很少有事情需要注意:

  1. 如果您尝试在客户端使用ID,则需要在HTML服务器控件的情况下使用clientidmode=static,在ASP.NET控件的情况下使用ClientIDMode=Static。这是因为ASP.NET

    中的客户端ID和服务器ID不一定相同
    <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);