Forum
15:16
17/08/2014
I was recently working on setting inline editing for my SharePoint list and wanted to enable rich text editing for one of my list columns. I've utilized JQGrid inline editing and every thing is working fine except i couldn't enable RTE (rich text editing) for my textarea column. I tried integrating CKEditor MiceEdit and other controls to convert my textarea with RTE functionality but nothing seems to work.Â
I was wondering if JQGrid supports or can integrate RTE functionality while using Inline editing so would appreciate any help in regards to the functinality.
Â
Thanks in advance for your feedback!
11:41
Moderators
30/10/2007
Hello,
Â
We have successfully use tinymce with custom element and custom value function.
Â
Here is a fragment which work fine in form edit. Just try it in inline edit:
{ "name":"ShipAddress",
 "index":"ShipAddress",
 "edittype":"custom",
 "editoptions":{
    "custom_element":function( value }, options) {
      var elm = $('<textarea></textarea>');
      elm.val( value );
      // give the editor time to initialize
      setTimeout( function() {
         tinymce.init({selector: "textarea#ShipAddress"});
      }, 100);
      return elm;
    },
    "custom_value":function( element, oper, gridval) {
         if(oper === 'get') {
            return tinymce.get('ShipAddress').getContent({format: 'row'});
         } else if( oper === 'set') {
            if(tinymce.get('ShipAddress')) {
               tinymce.get('ShipAddress').setContent( gridval );
            }
         }
    }
Â
Try it and let me know if this work in inline edit.
Â
Regards
   Â
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
12:47
Moderators
30/10/2007
Hello,
Did you have included the tinymce javascrip files. I'm going to test this.
Â
Regards
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
13:02
Moderators
30/10/2007
Hello,
Â
I see where is the problem. - the id of editable cell is not the same as in form edit.
Below is the modified code, which works for me:
{ "name":"ShipAddress",
 "index":"ShipAddress",
 "edittype":"custom",
 "editoptions":{
     "custom_element":function( value }, options) {
       var elm = $('<textarea></textarea>');
       elm.val( value );
       // give the editor time to initialize
       setTimeout( function() {
           tinymce.init({selector: "textarea#" + options.id});
       }, 100);
       return elm;
     },
     "custom_value":function( element, oper, gridval) {
           var id = element[0].id;
           if(oper === 'get') {
               return tinymce.get( id ).getContent({format: 'row'});
           } else if( oper === 'set') {
               if(tinymce.get( id )) {
                   tinymce.get( id ).setContent( gridval );
               }
           }
     }
Regards
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
13:32
Moderators
30/10/2007
Hello,
Â
Your problem is here:
editoptions:{custom_element:function( value , options) {
var elm = $('<textarea rows=10 cols=100></textarea>');
elm.val( value );
// give the editor time to initialize
setTimeout( function() {
tinymce.init({selector: "textarea#CommentsRestrictions"});
}, 100);
Â
Please look all my code carfully.
Change this to
editoptions:{custom_element:function( value , options) {
var elm = $('<textarea rows=10 cols=100></textarea>');
elm.val( value );
// give the editor time to initialize
setTimeout( function() {
tinymce.init({selector: "textarea#" + options.id});
}, 100);
Â
Regards
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
02:11
17/08/2014
Hi,
I tried integrating the tinymce RTE on the JQGrid for inline editing. I'm currently an issue of refresh when the user click on textarea column (it first loads the textarea and then shows the tinymce RTE control) which is very annoying for our users. I was wondering if i can bind the tnymce RTE control in some other event or change some other options to make it seamless.
I also want to customize the options on tinymce control to only few buttons like bold, italic, underline etc. I was wondering if that is possible.
I'm attaching my code for reference and thanks a bunch in advance for your inputs.
function buildgrid() {
      var grid = jQuery("#Northwinds");
      var gridData;
      grid.jqGrid({
          url: '/sites/cats/_vti_bin/listdata.svc/TSCMaster',
          datatype: 'json',
          sortable: true,
          rownumbers: false,
          jsonReader: {
              root: "d.results",
              repeatitems: false
          },
            success: function(data){
         var $self = $(this);
                 setTimeout(function () {
                  $self.trigger("reloadGrid");
                 }, 50);
      },
      afterSubmit: function () {
            $(this).jqGrid("setGridParam", {datatype: 'json'});
            return [true];
      },
          colNames: [" ", "Script Page", "Scene #", "Item Description", "Comments/Restrictions","url","etag"],
          colModel: [
      {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions',
         formatoptions:{keys:true}},
      {
              name: 'ScriptPage',
              editable: true,
              sortable: true,
              index: 'ScriptPage',
         search: false,
              width: 75},
          {
              name: 'SceneNumber',
              editable: true,
              sortable: true,
         search: false,
              index: 'SceneNumber',
              width: 75},
          {
              name: 'ItemDescription',
              editable: true,
              sortable: true,
              index: 'ItemDescription',
              width: 300},
      {
         name:'CommentsRestrictions',
          index:'CommentsRestrictions',
         editable:true,
         width :600,
                   edittype:'custom',
         editoptions:{custom_element:function( value , options) {
             var elm = $('<textarea rows=4 cols=100></textarea>');
             elm.val( value );
             // give the editor time to initialize
             setTimeout( function() {
                 tinymce.init({selector: "textarea#" + options.id
         });
             }, 0);
             return elm;
              },
              custom_value:function( element, oper, gridval) {
         var id = element[0].id;
                 if(oper === 'get') {
                  return tinymce.get(id).getContent({format: 'row'});
                 } else if( oper === 'set') {
                   if(tinymce.get(id)) {
                      tinymce.get(id).setContent( gridval );
                        }
                    }
           }
         }
           },
               { Â
         name: '__metadata.uri', Â
         editable: false,
         hidden: true,
         width: 400},
               { Â
         name: '__metadata.etag', Â
         editable: false,width: 100,
         hidden: true}],
          onSelectRow: function(id) {
Â
                 var rowData = $("#Northwinds").getRowData(id);
                 var newUrl = rowData['__metadata.uri'];
                 $(this).setGridParam({
                  'editurl': newUrl
              });
              if (id && id !== lastSel) {
                  $("#Northwinds").restoreRow(lastSel);
Â
                  lastSel = id;
              }
              $("#Northwinds").editRow(id, true, null, null);
     Â
          },
     Â
      serializeRowData: function(postdata) { //USED ON EDIT
                 var x = JSON.stringify(postdata);
                 return x;
          },
          ajaxRowOptions: { // USED ON EDIT
                 contentType: 'application/json; charset=utf-8',
                 datatype: 'json',
                 mtype: 'POST',
                 async: true,
              beforeSend: function(jqXHR, settings) {
                  grid = $("#Northwinds").jqGrid(); // get the selected row
                  this.selectedRow = grid.jqGrid('getGridParam', 'selrow'); // add the selected row to the ajax object so we can get at in in the callback
                  var etag = grid.jqGrid('getCell', this.selectedRow, '__metadata.etag');
                  jqXHR.setRequestHeader("X-HTTP-Method", "MERGE");
                  jqXHR.setRequestHeader("If-Match", etag);
Â
                  var postdata = $.parseJSON(settings.data);
                  delete postdata['oper']; // dont send operation to the server
                  delete postdata['id']; // dont send operation to the server
                  delete postdata["__metadata.etag"];
                  delete postdata["__metadata.uri"];
Â
                  settings.data = JSON.stringify(postdata);
Â
              }, Â
      success: function(data, textStatus, jqXHR) {
                  // requery the resource to get the new etag // this is due to a bug in ie that drops all headers associated with an h204
                  var selectedRow = this.selectedRow;
                  $.ajax({
                         beforeSend: function(jqXHR, settings) { // need to pass the selectedRow to the second (nested callback)
                            this.selectedRow = selectedRow;
                      },
                      async: false,
                      contentType: 'application/json; charset=utf-8',
                      datatype: 'json',
                      url: this.url,
                      success: function(data, textStatus, jqXHR) {
                          var etag = jqXHR.getResponseHeader("ETag");
                          $("#Northwinds").jqGrid("setCell", this.selectedRow, "__metadata.etag", etag); // update the etag on the selected row
                         }
                  })
       }
              },
      loadComplete: function (data) {
            //setSearchSelect(grid, griddata, 'Category', 'eq');      Â
         },
      pager: "#pager",  Â
          rowNum: 1000,
      rowList: [10, 50, 100, 500, 'All'],
      height: 'auto',
      loadonce:true,
      reloadAfterSubmit: true,
      viewrecords: true,
      gridview: true, // insert all the data at once (speedy)
      caption: 'Theatrical Clearance List'
      });
11:03
Moderators
30/10/2007
HEllo,
Â
Your questions are related to tinymce editor.
I think you should ask these questions in another forum
Â
Regards
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
15:34
Moderators
30/10/2007
Hello,
You are wellcome!
Â
Regards
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
Most Users Ever Online: 715
Currently Online:
71 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
OlegK: 1255
markw65: 179
kobruleht: 144
phicarre: 132
YamilBracho: 124
Renso: 118
Member Stats:
Guest Posters: 447
Members: 11373
Moderators: 2
Admins: 1
Forum Stats:
Groups: 1
Forums: 8
Topics: 10592
Posts: 31289
Newest Members:
, razia, Prankie, psky, praveen neelam, greg.valainis@pa-tech.comModerators: tony: 7721, Rumen[Trirand]: 81
Administrators: admin: 66