2016-03-03 5 views
0

Я использовал TinyMCE в панели обновления, но он продолжает исчезать после каждого частичного сообщения, почему? Он должен работать в любом случае, даже официальный сайт не имеет на это никакого слова.Почему мой контроль исчезает при обратной передаче?

Я использовал это так:

<script type="text/javascript"> 
     tinymce.init({ 
      selector: '#<%=txtBoxBody.ClientID%>', 
      height: 200, 
      theme: 'modern', 
      plugins: [ 
       'advlist autolink lists pagebreak', 
       //'searchreplace wordcount visualblocks visualchars fullscreen', 
       'insertdatetime save contextmenu directionality', 
       ' paste textcolor textpattern print' 
      ], 
      toolbar1: 'insertfile undo redo | fontsizeselect | forecolor emoticons | fontselect emoticons | styleselect | bold italic | alignleft aligncenter alignright alignjustify', 
      //toolbar2: 'print preview media | forecolor backcolor emoticons', 
      //image_advtab: true, 
      fontsize_formats: '8pt 9pt 10pt 11pt 12pt 14pt 18pt 20pt 22pt 24pt 26pt 28pt 36pt 48pt 72pt', 
      //templates: [ 
      // { title: 'Test template 1', content: 'Test 1' }, 
      // { title: 'Test template 2', content: 'Test 2' } 
      //], 
      content_css: [ 
       '//fast.fonts.net/cssapi/e6dc9b99-64fe-4292-ad98-6974f93cd2a2.css', 
       '//www.tinymce.com/css/codepen.min.css' 
      ] 
     }); 


    </script> 

on this txtbox 
<asp:TextBox runat="server" ID="txtBoxBody" Rows="20" Columns="25" TextMode="MultiLine" CssClass="form-control"></asp:TextBox> 

он появляется на первой загрузке страницы, но не после того, как пост назад UPDATE:

он попробовал это на событие Pageload

//ScriptManager.RegisterStartupScript(this, this.GetType(), txtBoxBody.UniqueID + "Add", "tinyMCE.execCommand('mceAddEditor', true,'" + txtBoxBody.ClientID + "');", true); 
     //ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), txtBoxBody.UniqueID + "Remove", "tinyMCE.execCommand('mceRemoveEditor', true,'" + txtBoxBody.ClientID + "');"); 

It делает его видимым, но делает форму полной неприятностей, то есть полной обратной почтой и различными проблемами.

Обновление: Я использовал pageLoad javascript и помещал в него этот код, но затем плагин исчез.

Update: я попробовал то, что Piyush предложил

<script type="text/javascript"> 
    function SetEditor() { 
     tinymce.init({ 
      selector: '#<%=txtBoxBody.ClientID%>', 
      height: 200, 
      theme: 'modern', 
      plugins: [ 
       'advlist autolink lists pagebreak', 
       //'searchreplace wordcount visualblocks visualchars fullscreen', 
       'insertdatetime save contextmenu directionality', 
       ' paste textcolor textpattern print' 
      ], 
      toolbar1: 'insertfile undo redo | fontsizeselect | forecolor emoticons | fontselect emoticons | styleselect | bold italic | alignleft aligncenter alignright alignjustify', 
      //toolbar2: 'print preview media | forecolor backcolor emoticons', 
      //image_advtab: true, 
      fontsize_formats: '8pt 9pt 10pt 11pt 12pt 14pt 18pt 20pt 22pt 24pt 26pt 28pt 36pt 48pt 72pt', 
      //templates: [ 
      // { title: 'Test template 1', content: 'Test 1' }, 
      // { title: 'Test template 2', content: 'Test 2' } 
      //], 
      content_css: [ 
       '//fast.fonts.net/cssapi/e6dc9b99-64fe-4292-ad98-6974f93cd2a2.css', 
       '//www.tinymce.com/css/codepen.min.css' 
      ] 
     }); 


    } 
</script> 
<script type="text/javascript"> 
    // below will execute first time when page load 
    SetEditor(); 

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

    function EndRequestHandler(sender, args) { 
     // this will execute on partial postback 
     SetEditor(); 
    } 
</script> 

но та же проблема

ответ

0

Чтобы решить эту проблему, выполните следующие шаги,

  1. Создать setEditor яваскрипта функции, как показано ниже,

    <script type="text/javascript"> 
    function SetEditor() { 
        tinymce.init({ 
        ... 
        }); 
    } 
    </script> 
    
  2. до конца тега тела, добавьте ниже сценарий,

    <script type="text/javascript"> 
        // below will execute first time when page load 
        SetEditor(); 
    
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    
        function EndRequestHandler(sender, args) { 
         // this will execute on partial postback 
         SetEditor();   
        } 
    </script> 
    
+0

не работает sir – Stacky

+0

Ну, я пробовал с тем же, и это сработало для меня. Вы положили все это в файл .aspx? –

+0

да, сэр я сделал, и он не работает – Stacky

0

обернуть инициализации в функции то убедитесь, что вы зарегистрировать функцию инициализации с ScriptManager , как, например ScriptManager.RegisterStartupScript (это. Страница, this.Page.GetType(), mce.ClientID, "pageLoad();", true);

+0

ОК, это сработало, но оно вызывает полный пост назад страницы при каждом одновременном щелчке – Stacky

0

Очень полезная помощь @Piyush и небольшие модификации сделали трюк и решили проблему.

ScriptManager.RegisterStartupScript(this, this.GetType(), txtBoxBody.UniqueID + "Add", "tinyMCE.execCommand('mceAddEditor', true,'" + txtBoxBody.ClientID + "');", true); 
    ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), txtBoxBody.UniqueID + "Remove", "tinyMCE.execCommand('mceRemoveEditor', true,'" + txtBoxBody.ClientID + "');"); 
Смежные вопросы