2010-11-05 2 views
1

Я создал TabPanel в моем aspx-файле. В моем коде позади я динамически создаю: вкладки внутри него, а также HtmlEditor в каждой вкладке. Я также создаю слушателя на каждой вкладке, так что, когда они активируются или отображаются, HtmlEditor на этой вкладке получает фокус.Ext.NET (Coolite) Динамически созданный прослушиватель Tabs в Tabpanel не находит идентификатор HTMLEditor (объект не определен)

Когда я запускаю программу, я вижу, что вкладка была создана на моей TabPanel. Но перед тем, как веб-страница будет готова к использованию, возникает ошибка, заявляющая, что идентификаторы объектов в слушателях не определены. Таким образом, слушатель не работает, и страница не загружается полностью.

Незначительная часть состоит в том, что если я добавлю непосредственно в мой aspx-файл, вкладку в моей панели вкладок и загружу оставшуюся часть динамической вкладки с помощью прослушивателей: все идентификаторы редакторов html распознаются, и все слушатели прекрасно работают. За исключением первой вкладки, у которой нет слушателя и не было создано динамически в этом случае.

Моя теория заключается в том, что вкладка индекса 0 TabPanel, по-видимому, является слушателем функций Activate() или Show(), прежде чем идентификатор элемента управления HtmlEditor будет сохранен на странице.

Так что мне интересно, что я пропустил, и как я могу поместить слушателей (активировать или показать) каждой вкладке в Tabpanel, которая вызовет метод фокусировки элемента управления внутри этой вкладки. И, конечно, я хочу динамически генерировать все мои вкладки.

Вы можете мне помочь?

Надеюсь, я был достаточно ясен.

Вот мой 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> 

Вот мой Default.aspx.cs страница:

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); 

    } 
} 

Попробуйте изменить 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">  

                <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> 

ответ

Смежные вопросы