2011-08-03 3 views
0

J'ai développé une simple application de chat ASP.NET Ajax.Je veux la mettre à niveau.Dans mon projet, j'ai une liste d'utilisateurs en ligne et je suis en cliquant sur l'un d'eux pour ouvrir un nouvelle fenêtre de navigateur Web (je fais ceci avec javascript window.open()). Maintenant, je veux améliorer mon projet.Application de chat one-to-one ASP.NET

Je souhaite ouvrir une div dynamique au lieu d'une nouvelle fenêtre. Cela peut également être une boîte de dialogue jquery. Donc ma question est:

Comment je vais ouvrir cette boîte div ou jquery et comment je vais importer mes contrôles asp.net (panneau de mise à jour, minuterie, etc.) dans cette div dynamique?

Répondre

0

Vous pouvez le faire avec le dynamic loader plugin (Vous trouverez échantillon complet là-bas) Première utilisation ajax pour appeler le contrôle utilisateur:

$(function() { 
     var content = $('#content'); 
     var btnAddCell = $('#btn-add-table'); 
     var tableid = 1 
     //dynamically add a new table to the page when the add button is clicked 
     btnAddCell.click(function() { 
      $.dynamicLoader.loadUC({ 
       ucName: 'UserControls/TableWidget.ascx', 
       queryString: 'tableid=' + tableid++, 
       eventBindings: { 
        ready: function(wrappedData) { 
         content.append(wrappedData); 
        } //here is where we get the rendered html and attach to the row 
       } 
      }); 
      return false; 
     }); 
    }); 

Définir un service (VCS) qui sert le contrôle de sorte que votre jquery peuvent faire des appels à eux:

namespace DynamicLoader 
{ 
    [ServiceContract(Namespace = "")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class Ajax 
    { 
     // Add [WebGet] attribute to use HTTP GET 
     [WebGet] 
     [OperationContract] 
     public Stream RenderUC(string path) 
     { 
      Page pageHolder = new Page(); 
      UserControl viewControl = (UserControl)pageHolder.LoadControl(path); 
      pageHolder.Controls.Add(viewControl); 
      StringWriter output = new StringWriter(); 
      HttpContext.Current.Server.Execute(pageHolder, output, true); 

      //trick to output exactly what you want (without wcf wrapping it) 
      return new MemoryStream(Encoding.UTF8.GetBytes(output.ToString())); 
     } 

     // Add more operations here and mark them with [OperationContract] 
    } 
}