웹 페이지 (aspx)가 있습니다. 이 페이지는 button
, UpdatePanel
및 Timer
입니다. 이제 내 문제는 10 명의 사용자가 동시에이 페이지에 있다고 가정하고 사용자 번호 3과 8이 버튼을 클릭하고 모든 사용자의 UpdatePanel이 업데이트되어야한다고 가정 할 때입니다. 이 기능을 구현하는 올바른 방법은 무엇입니까?다른 사용자의 웹 페이지 UpdatePanel
답변
각 사용자는 웹 응용 프로그램의 사본을 실행하므로 한 사용자의 브라우저에서 발생하는 일은 다른 사용자에게 알릴 수 없습니다. 당신이 할 수있는 한가지는 한 사용자가 버튼을 클릭하여 업데이트 할 때 당신이 그것을 저장할 수있는 반면에 모든 사용자 응용 프로그램이 서버에 ping을 수행 할 수있을 때마다 2 초마다 업데이트가 발생했는지 여부를 알 수 있습니다.
모든 인스턴스 (= 세션)를 관리하는 GLOBAL이라는 것이 있습니다. 확실히 그것은 다른 세션들 사이에 어떤 종류의 상호 작용을 생성하는데 사용될 수 있습니까? –
전역 속성을 사용할 수 있습니다. 이 속성에서 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();
}
}
귀하의 질문은 아무도 제대로 대답하기에 충분한 정보가없는 것입니다. 모든 사용자가 최신으로 유지하도록하려는 정보가있는 경우 해당 정보를 데이터베이스에 저장하십시오. 한 사용자가 사용자 세션에서 데이터를 편집하면 다른 사용자가 페이지를 새로 고칠 때마다 가장 업데이트 된 데이터를 갖게됩니다. 페이지를 주기적으로 새로 고치려면 자바 스크립트 타이머를 사용하십시오.
- 1. 다른 사용자의 연결 문자열
- 2. ASP.NET 다른 클라이언트에서 UpdatePanel 업데이트
- 3. 다른 사용자의 세션을 죽이는 방법
- 4. 다른 URL의 동일한 웹 페이지
- 5. 다른 웹 페이지에 포함 된 웹 페이지
- 6. 다른 사용자의 스크립트를 종료하십시오
- 7. UpdatePanel 컨트롤 및 페이지 상단으로 이동
- 8. 등록시 사용자의 프로필 페이지 생성
- 9. 다른 사용자의 프로필 표시
- 10. 웹 페이지?
- 11. UpdatePanel 페이지의 웹 컨트롤에서 스타일 시트 등록
- 12. 다른 웹 사이트에서 오는 사용자의 출처를 어떻게 알 수 있습니까?
- 13. jsp를 통해 다른 웹 페이지에서 웹 페이지 호출
- 14. 사용자 정의 컨트롤 (ASCX 페이지)의 UpdatePanel 대안
- 15. Updatepanel 및 jqgrid
- 16. 다른 사용자의 앱에서 Facebook 비즈니스 페이지에 게시
- 17. 웹 사용자의 IP 주소를 얻으십시오
- 18. UpdatePanel + AutoCompleteExtender + jQuery = 문제!
- 19. GridView UpdatePanel & Linkbutton 문제
- 20. asp : asp의 TreeView : UpdatePanel - 페이지 성능 저하 - 전체 페이지 PostBacks 수행 중!
- 21. ASP.NET GridView 및 UpdatePanel
- 22. UpdatePanel -이 동적으로 UpdatePanel 문제를 만든
- 23. 페이지/링크에 로그인 한 사용자의 세션 확인?
- 24. 웹 페이지
- 25. 웹 페이지
- 26. UpdatePanel Question
- 27. updatePanel 비동기 유형 요청을 설정하십시오.
- 28. 다른 페이지 클래스에서 페이지 클래스 액세스
- 29. 다른 CSS 구현 페이지 :
- 30. ASP.NET UpdatePanel 컨트롤
updatepanel은 ajax를 사용하여 클라이언트 브라우저와 통신하기 때문에 개별 브라우저가 다른 브라우저의 상태를 알 수있는 방법이 없습니다. 모든 클라이언트에 변경 사항을 적용하거나 클라이언트가 단지 페이지가 아닌 웹 서비스를 확인하도록 웹 소켓을 사용해야 할 것입니다. – faester
@faester는'단지 한 페이지가 아닌 웹 서비스를 확인하십시오 '라고 설명 할 것입니다. – jams
내 고집 센 것 같지만 ** 믿을 수있다. ** 가능하다. 아래의 코드에서 브레인 스톰을 제공했습니다. –