Обновление UpdatePanel на веб-странице другого пользователя - PullRequest
0 голосов
/ 04 мая 2011

У меня есть веб-страница (aspx).На этой странице есть button, UpdatePanel и Timer.Теперь моя проблема заключается в следующем: предположим, что на этой странице одновременно находятся 10 пользователей, и предположим, что пользователи с номерами 3 и 8 щелкают по его кнопке, после чего все пользователи UpdatePanel должны обновляться.Как правильно достичь этой функциональности?

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Поскольку каждый пользователь запускает свою собственную копию веб-приложения, то, что происходит в браузере одного пользователя, не может быть сообщено другому пользователю.Одна вещь, которую вы могли бы сделать, - когда один пользователь нажимает кнопку обновления, вы можете сохранить ее, тогда как все пользовательское приложение может пропинговать сервер каждые 2 секунды, чтобы узнать, происходит ли обновление, и если да, то обновления.

0 голосов
/ 12 мая 2011

Ваш вопрос не имеет достаточной информации, чтобы кто-либо мог ответить правильно.Если есть информация, о которой вы хотите постоянно обновлять всех пользователей, сохраните эту информацию в базе данных.Когда один пользователь редактирует данные из своего пользовательского сеанса, всякий раз, когда другой пользователь обновляет свою страницу, он будет иметь самые обновленные данные.Если вы хотите, чтобы их страница периодически обновлялась, используйте таймер JavaScript.

0 голосов
/ 04 мая 2011

Вы можете использовать глобальное свойство. В этом свойстве вы можете поместить шаблон Observer и позволить посетителям подписываться. Когда вы изменяете свойство приложения (общее для всех сеансов), вы вызываете метод Notify (). Вызывается метод клиента Notify (), и вы добавляете функциональность для обновления UpdatePanel.

Этот код НЕ ПРОВЕРЕН, это руководство

// *** GLOBAL.ASAX
// This collection will contain all the updatepanels that need to be updated
private List<IUpdatePanelClient> _registeredClients = new List<IUpdatePanelClient>();

public static void RegisterClient(IUpdatePanelClient client)
{
    _registeredClients.Add(client);
}
public static void UnregisterClient(IUpdatePanelClient client)
{
    _registeredClients.Remove(client);
}
// Which client is triggering the update call ?
private IUpdatePanelClient _clientUpdating = null;
public static IUpdatePanelClient ClientUpdating
{ 
    get { return _clientUpdating ; } 
    set { _clientUpdating = value; Notify(); }
}
// Notify the clients
public static void Notify()
{
    foreach(IUpdatePanelClient client in _registeredClients)
    {
        client.Update();
    }
}

// *** IUPdatePanelClient.CS
interface IUpdatePanelClient // Interface to make the calls
{
    void Update();
}

// *** Your codepage
public class MyUpdatePanelPage : Page, IUpdatePanelClient // Inherit the interface
{
    public void Page_Load(Object sender, EventArgs e)
    {
        MyUpdatePanelPage.Global.RegisterClient(this);
    }

    public void Btn_Click(Object sender, EventArgs e)
    {
        MyUpdatePanelPage.Global.ClientUpdating = this;
    }

    public void Update()
    {
        this._updatePanel1.Update();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...