2016-06-06 3 views
0

Lors de l'affichage d'une RadWindow en bas de la page, la fenêtre est affichée en haut de la page et je dois revenir en arrière pour voir la fenêtre.Afficher Telerik RadWindow depuis le serveur tout en maintenant la position de défilement

Je maintiens la position après revenir en arrière en réglant 'MaintainScrollPositionOnPostback':

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 

J'ai un RadListView où le ItemTemplate a un bouton en elle. Lorsque ce bouton est cliqué, j'affiche un modal RadWindow. Le problème est que si je défile vers le bas de la page et que je clique sur le bouton, la page affiche la fenêtre en haut de la page, puis redescend à l'endroit où l'utilisateur a défilé (en raison de MaintainScrollPositionOnPostback). Donc, la fenêtre est affichée hors écran jusqu'à ce que l'utilisateur fasse défiler vers le haut

Comment puis-je montrer la RadWindow où l'utilisateur fait défiler la publication? (Pas en haut de la page)

J'ai essayé afficher RadWindow 2 façons différentes, mais les deux ont même résultat

Way 1:

Window.VisibleOnPageLoad = true; 

Way 2:

string script = "function f(){$find(\"" + RadWindow1.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);"; 
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true); 

Répondre

0

Ajouter un délai d'attente autour de show() pour laisser le défilement s'effectuer avant d'ouvrir la RadWindow. Dans le cas contraire, voici ce qui se passe:

  1. retourne postback, la page ne défile pas

  2. RadWindow présente, centre dans la fenêtre actuelle

  3. défilement des changements afin que votre RadWindow est pas là où vous vous attendez il

Voici un exemple:

string script = "function f(){setTimeout(function(){$find(\"" + RadWindow1.ClientID + "\").show(); },111);Sys.Application.remove_load(f);}Sys.Application.add_load(f);"; 

où vous pouvez ajuster le délai d'expiration de 111ms que j'ai ajouté à des fins d'illustration. Utiliser 0 comme argument peut également suffire. Pour être honnête, je ne sais pas combien de temps cela prend pour que le parchemin change.

D'ailleurs, je créerais une fonction JS dans le balisage qui prendrait l'ID du RadWIndow comme argument et appeler au lieu, juste pour rendre le code plus lisible