我正在使用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;
});
}
});
});
});
答案 0 :(得分:0)
很少有事情需要注意:
如果您尝试在客户端使用ID,则需要在HTML服务器控件的情况下使用clientidmode=static
,在ASP.NET控件的情况下使用ClientIDMode=Static
。这是因为ASP.NET
<asp:TextBox ID="TxtOrder" runat="server" Width="150px" ClientIDMode="Static" ></asp:TextBox>
当您执行以下操作时:
$.each(Result.d, function (){
document.getElementById('#TxtOrder').value = value.OrderNo;
});
您正在反复获取相同的输入元素(带有id=TxtOrder
的文本框,并为其指定不同的值。
此外,我认为value.OrderNo
在函数内部未定义。而是做类似的事情:
$.each(Result.d, function (key, value){
document.getElementById('#TxtOrder').value = value.OrderNo;
});
作为旁注,如果您已经在使用jQuery
,那么jQuery
方式就是$("#TxtOrder").val(value.OrderNo);