Возврат всего поля из Datatable в AJAX - PullRequest
0 голосов
/ 05 февраля 2020

Моя проблема в том, что после ввода текста и нажатия кнопки поиска не отображается таблица из c#. Я пробовал много способов, но это не может работать. Ниже мой код.

Ниже мой javascript:

url: "/Testing/TraceReport/traceReport.aspx/app",
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',    
success: function (response) {
    var xmlDoc = $.parseXML(response.d);
    var xml = $(xmlDoc);
    var EquipmentList = xml.find("Table1");
    var content = "";
    if (EquipmentList.length > 0) {
        $(EquipmentList).each(function () {
            content += "<tr align='center'>";

            if ($(this).find('Column1').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column1').text() + "</b></td>"; }

            if ($(this).find('Column2').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column2').text() + "</b></td>"; }

            if ($(this).find('Column3').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column3').text() + "</b></td>"; }

            if ($(this).find('Column4').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column4').text() + "</b></td>"; }

            if ($(this).find('Column5').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column5').text() + "</b></td>"; }

            if ($(this).find('Column7').text() == "") { content += "<td><b><font color='red'>UNKNOWN</font></b></td>"; }
            else { content += "<td><b>" + $(this).find('Column7').text() + "</b></td>"; }

            content += "</tr>";
        });
    }

Ниже мой c#:

DataTable table = new DataTable();
table = ConvertListToDataTable(list);
DataSet ds = new DataSet();
ds.Tables.Add(table);

return ds.GetXml();

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Ну, насколько я понимаю, вы возвращаете сам объект DataTable из вашего WebMethod, и вы хотите прочитать все возвращенные rows из column.

Вот мое предложение сделайте это, создайте модель и скопируйте значения из DataTable в объект класса C# Generi c List. Ниже приводится идея:

// Sample Class
public class MyData
{
    public string Column1 {get; set;}
    public string Column2 {get; set;}
    public string Column3 {get; set;}
    public string Column4 {get; set;}
    // ... and so on
}

Затем в вашем WebMethod:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]  // To Force the service method to return JSON only
public static List<MyData> DoStuff()
{
    DataTable table = FetchMyTable(); // method that gets your data from SQL
    List<MyData> data = new List<MyData>();
    foreach(DataRow row in table.Rows)
    {
        MyData dataItem = new MyData
        {
            Column1 = row["Column1"].ToString(),
            Column2 = row["Column2"].ToString(),
            // And So on...
        };
        data.Add(dataItem);
    }
    return data;
}

Затем в вашем ajax вызове:

$.ajax({
// your other parameters
contentType: 'application/json; charset=utf-8;',
accept: 'application/json; charset=utf-8;',
dataType: 'json',
success: function(response){
        // Now from here you can loop through it
        for(var i = 0; i < response.length; i++){
            var column1 = response[i].Column1;
            var column2 = response[i].Column2;
            // and so on....
        }
    }
});

Это грубая идея, как выполнить задачу, которую вы делаете. Надеюсь, это поможет.

PS: я не использовал никакой компилятор, поэтому код не тестировался, возможно, ему нужна любовь.

0 голосов
/ 05 февраля 2020

Свойство dataType сообщает серверу, какой тип данных возвращать.

Вы указываете серверу, который хотите получить json. Тем не менее, похоже, что сервер отправляет xml. Обновите dataType в методе ajax:

...
dataType: 'xml', 
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...