2014-08-19 2 views
1

Извините, что вернул этот вопрос снова, я просмотрел другие вопросы о SO, Code Project, ASP Forums и форумах TinyMCE и без сигары.TinyMCE UpdatePanel Re Init Issue

У меня есть панель обновления внутри сидит два шаблона с текстовыми областями содержимого (asp: textbox), которые обрабатываются с помощью расширяемых панельных расширителей. В Page_Load обе текстовые области контролируются плагином TinyMCE, но когда вы закрываете его и снова открываете, у него нет контроллера TMCE для текстового поля.

Я пытаюсь заставить контроллер TinyMCE заполнять текстовые поля независимо от частичной обратной передачи.

Я попытался удалить все другие плагины и скрипты jQuery без каких-либо последствий, поэтому я исключил проблемы совместимости с другими скриптами.

Чтобы уточнить, в моем коде сегмент повторной инициализации работает с другими плагинами, которые у меня есть, поэтому я бы ожидал/надеялся, что это сработало бы здесь.

Я уменьшил и упростил свой код, чтобы содержать только соответствующие сегменты, если я пропустил что-либо, сообщите мне, и я обновлю вопрос.

Любая помощь была бы принята с благодарностью, спасибо.

Сценарии

<script src="../Scripts/tinymce/tinymce.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     tinymce.init({ 
      menubar: false, 
      width: 800, 
      height: 250, 
      selector: "textarea" 
     }); 

      function confirm_delete() { 
       return confirm('Are you sure that you wish to delete this announcement?'); 
      } 

    // reinitialise everything after postback 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 

       prm.add_endRequest(function() { 

         tinymce.init({ 
          menubar: false, 
          width: 800, 
          height: 250, 
          selector: "textarea" 
         }); 
    </script>  

ASP Update Panel

<asp:UpdatePanel ID="annupd" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional" > 
       <ContentTemplate>   
     <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="Id" InsertItemPosition="FirstItem" ItemPlaceholderID="lay0" OnItemCommand="ListView1_ItemCommand" AllowPaging="True" EnableViewState="true"> 
      <EditItemTemplate> 
       <tr style="background-color:#fffAfC;"> 
        <td style="width:90px;" rowspan="3"> 
         <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /> 
         <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" /> 
        </td> 
        <td > 
         <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' Width="300px" /> 
        </td> 
        <td> 
         <asp:CheckBox ID="EnabledTextBox" runat="server" Checked="SomeBind" />Enabled 
        </td> 
       </tr> 
       <tr > 
        <td colspan="4"> 
         <asp:TextBox ID="TextBox2" runat="server" Text="SomeBind" TextMode="MultiLine" Width="100%" Rows="16"/> 
        </td> 
       </tr> 
       <tr style="background-color:#fffAfC;color: #FFFFFF;"> 
        <td colspan="2"> 
         <asp:TextBox ID="URLLinkTextBox" runat="server" Text="SomeBind" Width="100%"/> 
        </td> 
       <td colspan="1"> 
         <asp:DropDownList ID="Group" runat="server" Text="SomeBind" Width="120px" DataSourceID="SqlDataSource0" DataTextField="GroupName" DataValueField="ID"> 
         </asp:DropDownList> 
        </td> 
        <td colspan="1"> 
        <asp:DropDownList ID="DLL2" runat="server" Width="120px" OnSelectedIndexChanged="DLL2_SelectedIndexChanged" AutoPostBack="true" EnableViewState="true" CausesValidation="false"> 
         <asp:ListItem Value="0">Select</asp:ListItem> 
         <asp:ListItem Value="1">Option 1</asp:ListItem> 
         <asp:ListItem Value="2">Option 2</asp:ListItem> 
        </asp:DropDownList> 
        <td>> 
        </td> 
       </td> 
       </tr> 
      </EditItemTemplate> 
      <EmptyDataTemplate> 
       <table runat="server" style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;"> 
        <tr> 
         <td>No data was returned.</td> 
        </tr> 
       </table> 
      </EmptyDataTemplate> 
      <ItemSeparatorTemplate> 
       <tr> 
        <td colspan="5" class="hr"><hr /></td> 
       </tr> 
      </ItemSeparatorTemplate> 
      <InsertItemTemplate> 
       <tr> 
        <td colspan="5" > 
         <asp:panel runat="server" ID="Panel1" > 
          <div style="vertical-align:middle;height:30px;"> 
           <div style="float:left;vertical-align:top;height:20px;display:inline;padding:0px;"> 
           <asp:ImageButton ID="cdimg" runat="server" AlternateText="+" ImageUrl="/images/expand3.jpg" BorderStyle="None" CssClass="bimg" /> 
           </div> 
           <div style="float:left;vertical-align:middle;display:inline;padding:2px; cursor:pointer;"><h3>&nbsp;Add New Announcement</h3> 
           </div> 
          </div> 
         </asp:panel> 
        </td> 
       </tr> 
       <tr> 
    <td colspan="5" > 
     <asp:panel runat="server" ID="Panel2" CssClass="cpBody"> 
      <table id="innert" runat="server" style="width:100%;"> 
       <tr style=""> 
        <td rowspan="3" style="width:90px;"> 
         <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /> 
         <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" /> 
        </td> 
        <td> 
         <asp:TextBox ID="TitleTextBox" runat="server" Text="SomeBind" Width="300px" /> 
        </td> 
        <td style="width:80px;"> 
         <asp:CheckBox ID="EnabledTextBox" runat="server" Checked="true" />Enabled 
        </td> 
       </tr> 
       <tr > 
        <td colspan="4"> 
         <asp:TextBox ID="TextBox" runat="server" Text="SomeBind" Width="100%" TextMode="MultiLine" Rows="16" /> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="2"> 
         <asp:TextBox ID="URLLinkTextBox" runat="server" Text="SomeBind" Width="100%" /> 
        </td> 
        <td colspan="1"> 
         <asp:DropDownList ID="Group" runat="server" Text="SomeBind" Width="100px" DataSourceID="SqlDataSource0" DataTextField="GroupName" DataValueField="ID" > 
         </asp:DropDownList> 
        </td> 
        <td colspan="1"> 
         <asp:DropDownList ID="DDL" runat="server" Width="100px" OnSelectedIndexChanged="DDL_SelectedIndexChanged" AutoPostBack="true" CausesValidation="false" EnableViewState="true"> 
          <asp:ListItem Value="0">Select</asp:ListItem> 
          <asp:ListItem Value="1">Option 1</asp:ListItem> 
          <asp:ListItem Value="2">Option 2</asp:ListItem> 
         </asp:DropDownList> 
        </td> 
       </tr> 
     </table>  
    </asp:panel> 
     <act:CollapsiblePanelExtender runat="server" ID="ocpe" TargetControlID="Panel2" CollapseControlID="Panel1" ExpandControlID="Panel1" ImageControlID="odimg" CollapsedImage="/images/expand3.jpg" ExpandedImage="/images/contract3.jpg" Collapsed="True" ExpandedSize="450"> 
</act:CollapsiblePanelExtender> 
</td> 
</tr> 
    </InsertItemTemplate> 
      <ItemTemplate> 

      </ItemTemplate> 
      <SelectedItemTemplate> 

      </SelectedItemTemplate> 
      <LayoutTemplate> 
          <table id="imoo" border="1" style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;width:100%;"> 
           <thead> 
            <th>&nbsp;</th> 
            <th>Title</th> 
            <th>&nbsp;</th> 
           </thead> 
           <asp:literal id="lay0" runat="server"> </asp:literal> 
          </table> 
       <div id="centrepager" style="width:100%; text-align:center"> 
       <asp:DataPager PageSize="10" PagedControlID="ListView1" runat="server" ID="ListViewPageController" QueryStringField="Id"> 
        <Fields> 
         <asp:NextPreviousPagerField ShowFirstPageButton="true" ShowNextPageButton="false"/> 
         <asp:NumericPagerField ButtonCount="5" /> 
         <asp:NextPreviousPagerField ShowLastPageButton="true" ShowPreviousPageButton="false"/> 
        </Fields> 
       </asp:DataPager> 
        </div> 
      </LayoutTemplate> 
     </asp:ListView> 
       </ContentTemplate> 
      </asp:UpdatePanel> 

Update 1

Я имею в виду с помощью AJAX, чтобы решить эту проблему, чтобы вызвать TinyMCE плагин на частичной перезагрузки - будет это возможно, попытки до сих пор потерпели неудачу.

Я попытался инициализировать функцию jquery tinymce из page_load, если она еще не была вызвана, но все еще ничего.

VB.NET код

Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Page.IsPostBack Then 
      If (Not ClientScript.IsStartupScriptRegistered("tinymce")) Then 
       Page.ClientScript.RegisterStartupScript _ 
         (Me.GetType(), "tinymce", "tinymce();", True) 
     End If 
    End If 
End Sub 

Когда я попытался сделать это с помощью JQuery он сломал весь плагин.

   function pageLoad() { 
       tinymce.init({ 
        menubar: false, 
        width: 800, 
        height: 250, 
        selector: "textarea" 
       }); 

ответ

1

Упрощенный ниже, поскольку это привело меня к решению, сценарист был на моей главной странице, так что все повлияло на все.

В конце концов я отключил свой updatePanel - опять как ваш, это не решение как таковое, но отсортировало выпуск текстового редактора.

Чтобы заполнить ботинки обновления, я буду использовать JQuery для замены панели обновления, эти вопросы сортируют проблему, надеюсь, что это поможет.

This & this которые являются два информативно Q & Как о том, как использовать JQuery в качестве замены затем ASP UpdatePanel.

1

К сожалению, я не смог найти способ заставить это работать с панелью обновлений, работающей через ASP.

Чтобы решить проблему с тинимом, я отключил EnablePartialRendering в ScriptManagerToolkit.

Несмотря на то, что это не то решение, которое я хотел, это тот, который работал для этой конкретной проблемы - из-за нехватки времени это необходимо для работы как можно скорее.

Если/когда кто-то найдет лучшее решение, я обновлю эту тему. Ключ к тому, что это работает, похоже, полагается на форму обратной передачи, так что tinymce повторно инициализирует частичную загрузку страницы.