2010-11-05 24 views
1

J'ai créé un TabPanel sur mon fichier aspx. Dans mon code derrière, je crée dynamiquement: les onglets à l'intérieur et aussi un HtmlEditor dans chaque onglet. Je crée également un écouteur sur chaque onglet, de sorte que quand ils sont activés ou affichés, le HtmlEditor dans cet onglet obtient le focus. Quand j'exécute le programme, je vois que l'onglet a été créé sur mon TabPanel. Mais avant que la page Web ne soit prête à être utilisée, une erreur se produit indiquant que l'ID d'objet dans les écouteurs n'est pas défini. L'écouteur ne fonctionne donc pas et la page ne se charge pas complètement. La partie bizarre, est que, si j'ajoute directement dans mon fichier aspx, un onglet dans mon panneau d'onglets, et charge le reste de mon onglet dynamique avec des écouteurs: Tous les identifiants des éditeurs html sont reconnus, et tous les auditeurs fonctionnent parfaitement. Sauf pour le premier onglet, qui n'a pas d'écouteur et n'a pas été créé dynamiquement dans ce cas. Ma théorie sur cela, c'est que la tabulation à l'index 0 d'un TabPanel semble lancer l'écouteur de Activate() ou Show() avant que l'ID du contrôle HtmlEditor ne soit sauvegardé dans la page. Donc, je me demande ce que j'ai manqué et comment puis-je mettre des écouteurs (activer ou afficher) à chaque onglet dans un tableau de tabulation qui déclenchera la méthode de mise au point d'un contrôle à l'intérieur de cet onglet. Et bien sûr, je veux générer tous mes onglet de manière dynamique.Ext.NET (Coolite) Listener créé dynamiquement des onglets dans un tableau de tabulation ne trouve pas l'ID de l'HTMLEditor (objet n'est pas défini)

Pouvez-vous m'aider?

J'espère que j'étais assez clair.

Voici mon page Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %> 

<script runat="server"> </script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page sans titre</title> 
</head> 
<body runat="server"> 
       <ext:ScriptManager ID="CooliteScriptManager" runat="server" QuickTips="true" ScriptAdapter="Ext"> 
     </ext:ScriptManager> 

<form id="form" runat = "server"> 
     <ext:Panel ID="PnFiche" runat="server" Border="false" Header="false" Frame="false" 
       AutoScroll="true" BodyStyle="padding: 10px; text-align: left;"> 
       <Body> 
        <ext:FormLayout ID="FormLayout1" runat="server" LabelWidth="150"> 
        <ext:Anchor runat="server"> 
         <ext:MultiField runat="server" FieldLabel="Indications/but de l'analyse" > 
          <Fields> 
           <ext:FormPanel runat="server" Title="Indications/but de l'analyse" Width="1000" Collapsible="true"> 
            <Body> 
             <ext:TabPanel ID="TpIndications" runat="server" Width="1000" Height="250" EnableTabScroll="true">  


             </ext:TabPanel> 
            </Body> 
           </ext:FormPanel> 
          </Fields> 
         </ext:MultiField> 
        </ext:Anchor> 
        </ext:FormLayout> 
       </Body> 
     </ext:Panel> 
     </form> 

</body> 
</html> 

Voici mon Default.aspx.cs page:

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 

using Coolite.Ext.Web; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     GenerateObjectTabPanel(TpIndications, "French", "Indication", null); 
     GenerateObjectTabPanel(TpIndications, "English", "Indication", null); 
    } 

    private void GenerateObjectTabPanel(TabPanel theTabPanel, String theLanguage, String suffixeID, String TextToReplace) 
    { 
     HtmlEditor TheHtmlEditor = new HtmlEditor(); 
     TheHtmlEditor.ID = "Editeur_HTML_" + suffixeID + "_" + theLanguage; 
     TheHtmlEditor.Height = 250; 
     TheHtmlEditor.Width = 1000; 

     if (!string.IsNullOrEmpty(TextToReplace)) 
     { 
      TheHtmlEditor.Text = TextToReplace; 
     } 

     Tab TheTab = new Tab("Tab_" + suffixeID + "_" + theLanguage, theLanguage); 
     TheTab.BodyControls.Add(TheHtmlEditor); 
     TheTab.Listeners.Activate.Handler = "#{" + TheHtmlEditor.ID + "}.focus();"; 

     theTabPanel.Tabs.Add(TheTab); 

    } 
} 

Essayez de modifier la default.aspx avec un onglet déjà chargé et l'écouteur fonctionne bien (Mais bien sûr, je ne veux pas que puisque je veux que tout mon onglet soit chargé dynamiquement):

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %> 

<script runat="server"> </script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page sans titre</title> 
</head> 
<body runat="server"> 
       <ext:ScriptManager ID="CooliteScriptManager" runat="server" QuickTips="true" ScriptAdapter="Ext"> 
     </ext:ScriptManager> 

<form id="form" runat = "server"> 
     <ext:Panel ID="PnFiche" runat="server" Border="false" Header="false" Frame="false" 
       AutoScroll="true" BodyStyle="padding: 10px; text-align: left;"> 
       <Body> 
        <ext:FormLayout ID="FormLayout1" runat="server" LabelWidth="150"> 
        <ext:Anchor runat="server"> 
         <ext:MultiField runat="server" FieldLabel="Indications/but de l'analyse" > 
          <Fields> 
           <ext:FormPanel runat="server" Title="Indications/but de l'analyse" Width="1000" Collapsible="true"> 
            <Body> 
             <ext:TabPanel ID="TpIndications" runat="server" Width="1000" Height="250" EnableTabScroll="true">  

                <Tabs> 
                 <ext:Tab ID="TI_fr_CA" runat="server" Height="250" Width="1000" Title="test"> 
                  <Body> 
                   <ext:HtmlEditor ID="EI_fr_CA" runat="server" Height="250" Width="1000" Visible="true"> 
                   </ext:HtmlEditor> 
                  </Body> 

                 </ext:Tab> 
                </Tabs> 
             </ext:TabPanel> 
            </Body> 
           </ext:FormPanel> 
          </Fields> 
         </ext:MultiField> 
        </ext:Anchor> 
        </ext:FormLayout> 
       </Body> 
     </ext:Panel> 
     </form> 

</body> 
</html> 

Répondre