как открыть небольшую форму или окно из ячейки Jqgrid Править - PullRequest
0 голосов
/ 28 декабря 2011

Я новичок в jquery.Мое требование заключается в том, что мне нужно показать значение текстового поля MultiLine в Jqgrid и позволить пользователю редактировать его.Поскольку в моей сетке много столбцов, я подумал, что когда пользователь редактирует многострочное текстовое поле в jqgrid, появляется маленькое окно, в котором пользователь может ввести значение и, нажав кнопку, значение будет возвращено обратно в многострочное текстовое поле в jqgrid.

Опять же, когда пользователь хочет их видеть, нажатие на поле Multiline должно открыть окно с введенным текстом.

Может ли кто-нибудь помочь мне с этим?

Спасибо


Ниже приведены подробности моей сетки. Это редактируемая сетка.Мое требование - открывать всплывающее окно в любое время, когда пользователь нажимает на столбец «Пропущенные вопросы».

function loadCustomerBenefitResultsGrid()
   {       
    var lastsel;
             jQuery("#CustomerSavingsView").jqGrid(
                    {
                        dataType:"local",
                        colNames: ['UID','Date','QPlus Savings',
                    'Savings  Available',
             'Consignment Savings','Cost Increases','Distribution Fees',
           'Clinical Review', 'Inventory Red','Clinical Time',
           'Logistical Time',
        'SpaceUtil Time','GreenSmart Savings','Gold Standard',
       '%Staff Engaged in Courses','InsertUpdateDel','IsEdited',
        'CustomerID','GreenItems in Trays','SSF Layout',
        'StaffTest Scores','Freq Missed Questions','Popular Courses','Delete'],
                        colModel: [
                             {name:'UID',index:'UID', width:40, sorttype:'string',"key": true,hidden:true},
                             {name:'Date', index:'Date',width:100,align:'center', sorttype: 'string',editable:true, editoptions:{size:20, 
                                dataInit:function(el)
                                {                          
                                    $(el).datepicker({dateFormat:'mm/dd/yy'});

                                    },
                                        defaultValue: function()
                                           {                      
                                            var currentTime = new Date();                      
                                            var month = parseInt(currentTime.getMonth() + 1);                     
                                            month = month <= 9 ? "0"+month : month;                      
                                            var day = currentTime.getDate();                      
                                            day = day <= 9 ? "0"+day : day;                     
                                            var year = currentTime.getFullYear();   
                                                        return month+"/"+day + "/"+year;                    
                                           }                 
                                    }                
                             },                                
                            { name: 'ProductSavings', index: 'ProductSavings',width:70,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'SavingsstillAvailable', index: 'SavingsstillAvailable',width:70,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'Consignment', index: 'Consignment',width:105,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'CostIncreases', index: 'CostIncreases',width:80,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'Distribution', index: 'Distribution',width:110,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'ClinicalReview', index: 'ClinicalReview',width:70,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'InventoryRed', index: 'InventoryRed',width:90,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'ClinicalTime', index: 'ClinicalTime',width:70,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'LogisticalTime', index: 'LogisticalTime',width:90,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'SpaceUtilTime', index: 'SpaceUtilTime',width:90,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'GreenSmart', index: 'GreenSmartSavings',width:90,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'GoldStandard', index: 'GoldStandard',width:80,align:'center', sorttype: 'string',editable: true,edittype: 'text',editoptions: { size: 10}  },
                            { name: 'StaffTestScores', index: 'StaffTestScores',width:80,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },                                
                            { name: 'InsertUpdateDel', index: 'InsertUpdateDel',width: 100, align:'center', sorttype: 'string',hidden:true},
                            { name: 'IsEdited', index: 'IsEdited',width: 40, align:'center', sorttype: 'string',hidden:true},
                            { name: 'CustomerID', index: 'CustomerID',width: 40, align:'center', sorttype: 'string',hidden:true},
                            { name: 'GreenItemsinTray', index: 'GreenItemsinTray',width:90,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  }, 
                            { name: 'SpacestoragefacultyAnalysis', index: 'SpacestoragefacultyAnalysis',width:80,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },
                            { name: 'StaffEducationalCourses', index: 'StaffEducationalCourses',width:80,align:'center', sorttype: 'string',editable: true,edittype: 'text', editoptions: { size: 10}  },      
                            { name: 'FreqMissedQuestions', index: 'FreqMissedQuestions',width:200, sorttype: 'string',editable: true,edittype:"textarea", editoptions:{rows:"3",cols:"25"}}  ,
                            { name: 'PopularCourses', index: 'PopularCourses',width:150,sorttype: 'string',editable: true,edittype:"textarea", editoptions:{rows:"3",cols:"20"}}  ,         
                            { name: 'Delete', index: 'Delete',width: 90, align:'center' }
                        ],
                        height: 250,
                        width:1175,
                        gridview:true,
                        hidegrid: false,
                        viewrecords:true,
                        sortable: true,                           
                        sortname: 'Date',
                        sortorder: "asc",
                        editurl: "clientArray",
                        onSelectRow: function(id) {
                                                          if (id && id !== lastsel) 
                                                          {    
                                                                jQuery("#CustomerSavingsView").saveRow(lastsel,false,'clientArray');
                                                                 jQuery("#CustomerSavingsView").editRow(id,true);
                                                                lastsel = id; 
                                                                //Get the current row
                                                                var currentRow = jQuery("#CustomerSavingsView").getRowData(id);                                                                       
                                                                //For Insert
                                                                if(currentRow['InsertUpdateDel']!= null && currentRow['InsertUpdateDel'] == "Inserted")
                                                                {
                                                                     changedRowsBeforeInsert.push(id);
                                                                }                                                                    
                                                                //For Update                                                                
                                                                if(currentRow['InsertUpdateDel']!= null && currentRow['InsertUpdateDel'] == "Updated")
                                                                {
                                                                    changedRows.push(id);
                                                                }

                                                           } else 
                                                           { 
                                                               jQuery("#CustomerSavingsView").saveRow(lastsel,false,'clientArray'); 
                                                                jQuery("#CustomerSavingsView").editRow(id,true);
                                                                lastsel = id;                                                                 
                                                               //Get the current row
                                                                var currentRow = jQuery("#CustomerSavingsView").getRowData(id); 
                                                                 //For Insert
                                                                if(currentRow['InsertUpdateDel']!= null && currentRow['InsertUpdateDel'] == "Inserted")
                                                                {
                                                                     changedRowsBeforeInsert.push(id);
                                                                }   
                                                                //For Update
                                                                if(currentRow['InsertUpdateDel']!= null && currentRow['InsertUpdateDel'] == "Updated")
                                                                {
                                                                    changedRows.push(id);
                                                                }                                                                       
                                                           }                                                            

                                                           //Limit the Keypress
                                                          $('input[name=ProductSavings]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=Consignment]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=CostIncreases]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=Distribution]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/ });
                                                          $('input[name=ClinicalReview]').limitkeypress({ rexp:/^[+]?\d*\.?\d*$/ });
                                                          $('input[name=InventoryRed]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=ClinicalTime]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=LogisticalTime]').limitkeypress({ rexp:/^[+]?\d*\.?\d*$/  });
                                                          $('input[name=SpaceUtilTime]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/ });
                                                          $('input[name=GreenSmart]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=StaffTestScores]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=SavingsstillAvailable]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });
                                                          $('input[name=GreenItemsinTray]').limitkeypress({ rexp:/^[+]?\d*\.?\d*$/  });
                                                          $('input[name=SpacestoragefacultyAnalysis]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/ });
                                                          $('input[name=StaffEducationalCourses]').limitkeypress({ rexp: /^[+]?\d*\.?\d*$/  });                                                             

                                                  },                             
                         gridComplete: function () {
                                                        var ids = jQuery("#CustomerSavingsView").jqGrid('getDataIDs');
                                                        if (ids.length > 0) 
                                                        {
                                                            for (var i = 0; i < ids.length; i++) 
                                                            {
                                                                var cl = ids[i];
                                                                cb = "<input type='checkbox' id='chkDelete"+cl+"' value='" + cl + "' />";
                                                                jQuery("#CustomerSavingsView").jqGrid('setRowData', cl, { Delete: cb});
                                                            }
                                                        }
                                                    }


       });                  

}

1 Ответ

1 голос
/ 28 декабря 2011

Начните со ссылки на эту страницу: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events

Найдите опцию для onCellSelect, это событие, которое вам нужно будет прослушать, bind.

onCellSelect : function (rowid,iCol, cellcontent, e) {
 // ...
}

В этом событии убедитесь, что iCol является индексом вашей конкретной ячейки текстового поля (так как это событие будет срабатывать для каждой ячейки, а эта функциональность требуется только для определенной ячейки). Если это правильная ячейка, то у вас есть несколько способов выполнить фактическое редактирование. Я бы сделал это, открыв модальный диалог jQuery UI со встроенной формой. Я бы также использовал jquery для заполнения содержимого формы с помощью rowID записи, по которой щелкнули, и для загрузки поля textarea с текущим значением ячейки (доступным в вашем обработчике событий как cellcontent). Затем можно использовать параметры отправки формы Ajax в jQuery (см. .serialize() и $.ajax()), чтобы отправить новое значение обратно на сервер, чтобы обновить значение в бэкэнде (например, обновление базы данных). Наконец, в вашем обработчике успеха Ajax вы закрываете модальное диалоговое окно и запускаете .trigger("reloadGrid"); на своей таблице, чтобы перезагрузить сетку с текущим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...