【发布时间】:2013-11-26 14:18:44
【问题描述】:
在我的应用程序中,我想创建生成 JSON 数据的 web 服务,但我的问题是它是第一次生成 JSON 数据,但是当我在参数中更改存储过程的值时,它不会从 DataRow 循环。
这是我的代码
<WebMethod(EnableSession:=True)> _
Public Shared Function Select_Search(ByVal MAKE As String, ByVal COLOR As String, ByVal CATAGORY As String, ByVal MODEL As String, ByVal TRANSMISSION As String, ByVal FUAL_TYPE As String, ByVal DRIVE As String, ByVal CHASSIS_NO As String) As SearchParameters()
Dim ListbyClass As New List(Of SearchParameters)()
Dim datatable As New DataTable()
Dim myStock As New dsStockTableAdapters.newSTOCK_LISTTableAdapter()
datatable = myStock.GetData(MAKE, "0", "0", "0", "0", DisplayType, "", "", "", "Any", "", "", "", "", "", 0, "", "", 0, "")
Try
'here when i change the above parameters value then looping is not working
For Each rdr As DataRow In datatable.Rows
Dim SRCH As New SearchParameters()
SRCH.CHASSIS_NO = rdr("CHASSIS_NO").ToString()
SRCH.MODEL = rdr("MODEL").ToString()
SRCH.color = rdr("color").ToString()
SRCH.TRANSMISSION = rdr("TRANSMISSION").ToString()
SRCH.DOOR = rdr("DOOR").ToString()
SRCH.MAKE = rdr("MAKE").ToString()
SRCH.Image1 = rdr("Image1").ToString()
SRCH.MODEL_DESCRIPTION = rdr("MODEL_DESCRIPTION").ToString()
ListbyClass.Add(SRCH)
Next
Catch
End Try
Return ListbyClass.ToArray()
End Function
现在,例如,当我将 0 传递给 MAKE 参数时,正在生成 JSON,因为 foreach 循环将在 datatable.Rows 中工作,但是当我将 MAKE 值更改为 23 之类的东西时,它不会循环遍历 DataTalbe Rows,而 JSON 将不会生成
这是我的 Ajax 方法脚本,我使用 jQuery 将值传递给参数。
<script type="text/javascript">
function StockList() {
$("#update").empty();
var make = $('#<%= ddlMake.ClientID %>').val();
var color = $('#<%= ddlColor.ClientID %>').val();
var catagory = $('#<%= ddlCat.ClientID %>').val();
var model = $('#<%= ddlMakeModel.ClientID %>').val();
var transmission = $('#<%= ddltransmission.ClientID%>').val();
var fual_type = $('#<%= rdfuelType.ClientID%>').val();
var drive = $('#<%= ddldrive.ClientID %>').val();
var chassis_no = $('#<%= txtChassis_No.ClientID %>').val();
var data = { MAKE: make, COLOR: color, CATAGORY: catagory, MODEL: model, TRANSMISSION: transmission, FUAL_TYPE: fual_type, DRIVE: drive, CHASSIS_NO: chassis_no }
var jsonData = JSON.stringify(data);
$.ajax({
type: "POST",
url: "stocklist.aspx/Select_Search",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
console.log(data);
var j = 1;
var count = 9;
for (var i = 0; i < data.d.length; i++) {
var output = '<ul class="selection page-' + (i == count || (i && !(i % 9)) ? j++ : j) + '">';
output += '<li >';
output += '<table><tr>';
output += '<td><img src="http://localhost:37245/NewPeaceAuto - Steer_Well/WebStock_Images/' + data.d[i].Image1 + '" alt=""/></td>';
output += '<td>CHASSIS NO:</td><td>' + data.d[i].CHASSIS_NO + '</td>';
output += '<td>MODEL:</td><td>' + data.d[i].MODEL + '</td>';
output += '<td>COLOR:</td><td>' + data.d[i].color + '</td>';
output += '<td>TRANS:</td><td>' + data.d[i].TRANSMISSION + '</td>';
output += '<td>DOOR:</td><td>' + data.d[i].DOOR + '</td>';
output += '<td>MAKE:</td><td>' + data.d[i].MAKE + '</td>';
output += '</tr></table></li></ul>';
$("#update").append(output);
count = count + 9;
}
}
});
}
</script>
如何循环抛出DataTable,无论哪些值将在参数中传递,如下所示
22 5 3 11 2
datatable = myStock.GetData(MAKE, MODEL, CATAGORY, COLOR, FUAL_TYPE .....)
【问题讨论】:
-
第一个问题:你确定你传入的参数导致返回数据吗?如果没有返回数据,则不会出现任何循环行为。
-
是的,我确信它正在返回数据,但是当我更改参数中的值(这些值也在数据库中)时,它不会循环遍历 DataRow
-
我应该问:是 WebMethod 循环不起作用,还是 JavaScript 中 Success 函数的循环?
-
it
s a webmethod looping which is not working while changing the values in parameters but its 当我 paas 0 而不是 MAKE 值时循环,此值“0”将来自下拉列表选择值或手动
标签: asp.net ajax vb.net c#-4.0