2015-06-17 2 views
-1

Я отображающий список на странице Default.aspx, который содержит объекты (лицо) извлекается из базы данных:ASP.NET Обновление списка с помощью JQuery AJAX

[WebMethod] 
[ScriptMethod(UseHttpGet = false)] 
public static void getPersonList() 
{ 
    DatabankService dbs = new DatabankService(); 
    persons = dbs.getPersons()); 
    // fillTable(persons) is not possible here (not possible in static method). 
    // fillTable code also cannot be place here because it uses UI Elements from default.aspx to create the table (same problem as above). 
} 

метода, чтобы заполнить таблицу:

public void fillTable(List<Person> persons) 
{ 
    // make colums and rows and will with data (foreach person in..) 
} 

Каждые 10 секунд этот метод должен вызываться снова без перезагрузки страницы, так что список обновляется:

$(function() { 
    setInterval(function() { 
     getData(); 
    }, 10000); 
}); 

function getData() { 
    $.ajax({ 
     type: "POST", 
     async: true, 
     url: "Default.aspx/getPersonList", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     error: function (jqXHR, textStatus, errorThrown) { 
      // error 
     }, 
     success: function (data) { 
      // success 
     } 
    }); 
} 

Проблема в том, что я не могу вызывать функцию fillTable из статического [WebMethod] getPersonList(). Как я могу сделать эту работу?

+0

Что вы имеете в виду «Не удается вызвать функцию fillTable» ? Он не работает, он терпит неудачу? Код звучит хорошо, поэтому есть, вероятно, крошечные вещи, которые вы забываете. –

+0

Вызов метода внутри статического метода дает ошибку, я думаю, это просто невозможно: «Ссылка на объект требуется для нестатического поля, метода или свойства ... Filltable()». – Sam

+0

Создайте метод в классе Person, называемом fillTable(), а затем верните его из метода getPersonList(). Также getPersonList() должен возвращать строку json-данных. –

ответ

0

Я, наконец, нашел хорошее решение. Поскольку, похоже, невозможно запустить метод fillTable() (не статический) внутри статического метода [WebMethod] getPersonList(), я не смог обновить содержимое, используя Code-Behind, где мне нужен доступ к элементам пользовательского интерфейса в статическом метод. То, что я сделал это конвертировать человек-лист в формате JSON-объект и отправил его в моей функции успеха JQuery (где необходимые элементы интерфейса для ориентации):

// getPersonList() 
... 
string result = JsonConvert.SerializeObject(persons); 
return result; 

// jQuery success 

success: function (data) { 
    response = JSON.parse(data.d); 

    $.each(response, function (i, item) { 
     // fill table using jQuery 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^