在我的应用程序中,我想创建可生成JSON数据的Web服务,但是我的问题是它是第一次生成JSON数据,但是当我在Parameters中更改存储过程的值时,它不会从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中运行。但是当我将MAKE值更改为23之类的东西时,它将不会遍历DataTalbe行并且不会生成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 .....)
我注意到您的Catch
发言是空的。如果您知道以下事实:
datatable = myStock.GetData(MAKE, "0", "0", "0", "0", DisplayType, "", "", "", "Any", "", "", "", "", "", 0, "", "", 0, "")
...当数据MAKE
为“ 23”时将返回数据-datatable
它将包含记录-那么我怀疑可能正在发生的事情是该Try
块中的某些内容导致了错误。由于您有一个空Catch
语句,因此您不知道该错误是什么,并且代码继续进行。
尝试从Try .. Catch .. End Try
代码周围删除代码,或在代码Catch
块中放置一些内容以在出现错误时告诉您。
ETA:如果没有错误出现,则很可能是您的表datatable
有0行。快速查找的方法:在之前添加以下行For Each
:
System.Diagnostics.Debug.Assert(datatable.Rows.Count > 0);
运行您的代码(在调试模式下,否则将不会发生任何事情),然后查看是否收到一个消息框,指出该声明不是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句