2015-03-31 3 views
0

У меня есть страница asp.net, которая использует SQLDependency Asp.Net SignalR 2 для автоматического отображения изменений из моей базы данных. Моя проблема в том, что я не вижу изменений на моей странице, даже если они верны, когда я отлаживаю. Если я обновляю базу данных, страница покажет старые данные, но мой концентратор получит новые данные. Но это не отображается. Единственное, что я начала работать, чтобы перезагрузить страницу через таймер, как это ..SignalR 2 не обновляет

<script> 
    function cache_clear() { 
     window.location.reload(true); 
    } 

    $(document).ready(function() { 
     var count = 60; 
     setInterval(function() { 
      $("b[id=show-time]").html(count--); 
      if (count == 0) cache_clear(); 
     }, 1000)}); 
</script> 

Но это также сделать всю идею SqlDependency избыточна. Может ли кто-нибудь дать мне подсказку, что мне нужно сделать, чтобы обновленные данные отображались на странице?

<script> 

     $(function() { 
      var notify = $.connection.notificationsHub; 

      notify.client.displayNotification = function (msg) { 
       $("#newData").html(msg); 
       $("#LitDiv").hide(); 
      }; 

      $.connection.hub.start(); 
     }); 
    </script> 

private void dependency_OnChange(object sender, SqlNotificationEventArgs e) 
     { 
      if (e.Info == SqlNotificationInfo.Insert || e.Info == SqlNotificationInfo.Delete || e.Info == SqlNotificationInfo.Update) 
      { SendNotifications(); } 
}    

     public void NotfiyAllClients(string msg) 
     { 
      IHubContext context = GlobalHost.ConnectionManager.GetHubContext<NotificationsHub>(); 
      // I can see that my database changes are made here, but it does not display that on the page unless I reload the page 
      context.Clients.All.displayNotification(msg); 
     }  

А использование метода SendNotification это ...

var nHub = new NotificationsHub(); 
nHub.NotfiyAllClients(message); 

EDIT: Если я воспитываю консоль я получаю эту ошибку ..

JavaScript runtime error: Unable to get property 'notificationsHub' of undefined or null reference 
+0

Вы ссылались на 'signalr/hubs' в своем проекте? –

ответ

0

Я думаю, что ваш хаб Defintion является неверный (псевдокод не 100%):

это ваш концентратор определение:

class NotificationsHub : Hub { 
    public void DisplayNotification(string msg){} 
} 

в использовании метода SendNotification:

IHubContext context = GlobalHost.ConnectionManager.GetHubContext<NotificationsHub>(); 
context.Clients.All.displayNotification(msg); 

или используйте индивидуальный информер класс не ступица

+0

Извините, но это не помогло, данные по-прежнему не отображаются. Он по-прежнему отображает старые данные ... – MTplus

1

Я нашел решение, у меня было 2 ссылки на JQuery на моей странице. Первый был помещен в раздел главы и был jquery-1.6.4.min, другой был помещен до конца тега тела (jQuery v1.11.2).

После того, как вы удалили тот, который был помещен в конце тега тела (jQuery v1.11.2), он работал, как предполагалось.

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