2010-12-01 36 views

Répondre

3

Mon ami a trouvé la meilleure façon de faire en utilisant l'une de la fonction intégrée non exposée du réseau telerik

 var popup = $("#" + e.currentTarget.id + "PopUp"); 
     //get the data window contained by the popup 
     var popupDataWin = popup.data("tWindow"); 

     //change popup title by calling the title 
     popupDataWin.title("Custom Title");    
     //center the window by calling the method center 
     popupDataWin.center(); 

de mettre ce morceau de code côté client on_edit api de la grille et vous verrez la magie

+0

Pourriez-vous ajouter un peu plus de contexte à votre exemple? Où sur le client ajoutez-vous cela? – camainc

+2

ce morceau de code doit être placé dans l'API OnEdit côté client de la grille telerik http://demos.telerik.com/aspnet-mvc/grid/clientsideevents. La plupart des problèmes pop-up ont été résolus dans une nouvelle version de terik, donc probablement ce problème est résolu aussi. – Shabeer

0

Vous ne savez pas si cela peut être fait automatiquement avec l'option de configuration - maintenant, sur les démos en direct, la fenêtre contextuelle est centrée dans la grille. Ma conjecture sauvage est que vous pouvez le positionner au centre de l'écran avec javascript ...

0

Je l'ai fait avant d'utiliser un popup personnalisé en utilisant une fenêtre Telerik Mvc définie séparément. Mon code d'échantillon ressemblait à ceci:.

<%= Html.Telerik().Window() 
    .Name("CompanyWindow") 
    .Title("Company Details") 
    .Buttons(b => b.Maximize().Close()) 
    .Visible(false) 
    .Modal(true) 
    .Width(600) 
    .Height(600) 
    .Draggable(true) 
    .Resizable() 
%> 

<% Html.Telerik().Grid<Vigilaris.Booking.Services.CompanySummaryDTO>() 
    .Name("CompaniesGrid") 
    .ToolBar(tb => tb.Template(() => { %> 
     <a href ="#" onclick="createCompany()" >Insert</a> 
     <% })) 
    .Columns(col => 
     { 
      col.Bound(c => c.Id).Width(20); 
      col.Bound(c => c.CompanyName).Width(120); 
      col.Bound(c => c.ResponsiblePersonFullName).Width(160); 
      col.Bound(c => c.ResponsiblePersonUserName).Width(160); 
      col.Bound(c => c.ResponsiblePersonEmail).Width(160); 
      col.Command(cmd => 
       { 
        cmd.Edit().ButtonType(GridButtonType.Image); 
       }).Title("Edit"); 
     }) 
    .DataKeys(keys => keys.Add(c => c.Id)) 
    .DataBinding(binding => binding.Ajax() 
     .Select("_IndexAjax", "Company") 
     .Insert("_InsertAjax", "Company") 
     .Update("_UpdateAjax", "Company") 
    ) 
    .Sortable() 
    .Render(); 
%> 

<script type="text/javascript"> 
    function createCompany() { 
     var url = '<%= Url.Action("New", "Company") %>' 
     $.post(url, function (data) { 
      var window = $('#CompanyWindow').data('tWindow'); 
      window.content(data); 
      window.center().open(); 
     }); 
    } 
</script> 

Vous remarquerez dans la fonction createCompany que j'appelle window.center() open(). Ceci centre explicitement le popup. Cependant, je ne pense pas que ce soit exactement ce que vous voulez faire, mais cela peut vous donner des indications dans la bonne direction. J'espère que ça aide.

3

merci les gars pour les réponses valides. Je sais que nous pouvons positionner une fenêtre contextuelle personnalisée, mais pas pour les fenêtres intégrées en mode édition.

Cependant, je manoeuvré la position avec jquery sur le côté client on_edit API de réseau telerik.

var popup = $("#" + e.currentTarget.id + "PopUp"); 

popup.css({ "left": ($(window).width()/2 - $(popup).width()/2) + "px", "top": ($(window).height()/2 - $(popup).height()/2) + "px" }); 

e.currentTarget.id donne la gridname.

0
@(Html.Telerik().Grid() 
.Name("FormFildGrid") 
.ClientEvents(events => events.OnEdit("Grid_onEdit")) 

)

function Grid_onEdit(e) { 
    var popup = $("#" + e.currentTarget.id + "PopUp"); 
    var popupDataWin = popup.data("tWindow"); 
    var l = ($(window).width()/2 - $(popup).width()/2); 
    popup.css({ "left": l + "px", "margin-left": "0", "width": $(popup).width() }); 
}