Bonjour,
J'ai creer 2 grid avec un deplacement de la griid 1 vers la grid 2 pour ajouter des donner de la 1 dans le store de la 2 (ca ca marche)
je veu ensuite envoyer en Json mon store2 (celui de la grid 2) probleme s'est qu'il ne m'envois que les donner qui sont deja presente dans la base de donner sans tenir conte de mes donner drag and drop
pour ajouter les donner de la grid 1 a la grid 2 jutilise les fonction add() et insert() mais ce ne fonctionne pas.
quand je fait le total du nombres de ligne de ma grid 2 il me ressort le nombre d'entré dans la bdd et non le nombre total de ligne dans la grid
je vpous copie mon code
function draganddrop()
{
recherchepanel = new Ext.FormPanel({
title : 'Recherche',
id : 'recherche',
waitMsgTarget : true,
frame : true,
//width : 500,
bodyStyle : 'padding:5px; float:left;',
items : [{
xtype: 'textfield',
fieldLabel : 'Recherche',
name : 'recherche',
allowBlank:false,
blankText: 'Ce champ est requis',
width: '94%'
}],
buttons : [{
text : 'Rechercher',
handler : search
}]
});
recherchepanel.render('element');
////////////////////////////////////
//donner de base du panel droite////
////////////////////////////////////
var myData = {
records : [
{ name : "Rec 0", column1 : "0", column2 : "0" },
{ name : "Rec 1", column1 : "1", column2 : "1" },
{ name : "Rec 2", column1 : "2", column2 : "2" },
{ name : "Rec 3", column1 : "3", column2 : "3" },
{ name : "Rec 4", column1 : "4", column2 : "4" },
{ name : "Rec 5", column1 : "5", column2 : "5" },
{ name : "Rec 6", column1 : "6", column2 : "6" },
{ name : "Rec 7", column1 : "7", column2 : "7" },
{ name : "Rec 8", column1 : "8", column2 : "8" },
{ name : "Rec 9", column1 : "9", column2 : "9" }
]
};
// Generic fields array to use in both store defs.
var fields = [
{name: 'name', mapping : 'name'},
{name: 'column1', mapping : 'column1'},
{name: 'column2', mapping : 'column2'}
];
// create the data store
var firstGridStore = new Ext.data.JsonStore({
//url: '/json/top/listage/type/1', //chemin vers le controller nous envoyant les valeur en Json
url: '/json/top/searchalbum/',
timeout : 30000,
//root: 'records',
totalProperty: 'totalCount',
//remoteSort: true,
fields: [
{name: 'id', type: 'int', mapping : 'id'},
{name : 'name', mapping : 'name'},
{name : 'release_date', mapping : 'release_date'}
],
root : 'records'
});
var secondGridStore = new Ext.data.JsonStore({
url: '/json/top/listagerelatif/type/'+type+'/id/'+insertid, //chemin vers le controller nous envoyant les valeur en Json
timeout : 30000,
//root: 'records',
totalProperty: 'totalCount',
//remoteSort: true,
fields: [
{name: 'id_r', type: 'int'},
'name',
'id_element'
],
/*fields : fields,
data : myData,*/
root : 'records'
});
// Column Model shortcut array
var cols = [
{ id : 'name', header: "id", width: 200, sortable: true, dataIndex: 'id'},
{header: "name", width: 200, sortable: true, dataIndex: 'name'},
{header: "Info sup", width: 200, sortable: true, dataIndex: 'release_date'}
];
var cols2 = [
{ id : 'name', header: "id", width: 200, sortable: true, dataIndex: 'id_element'},
{header: "name", width: 200, sortable: true, dataIndex: 'name'},
{header: "Info sup", width: 190, sortable: true, dataIndex: 'id'},
{header: "Supp", width: 50, sortable: true, dataIndex: 'id_r', renderer : rendersupp}
];
//Paginbar
var pagingBar = new Ext.PagingToolbar({
pageSize: resultsPerPage,
store: firstGridStore,
displayInfo: true, //info en bas a droite (page x : Y)
displayMsg: 'Affichage des actualités {0} - {1} sur {2}',
emptyMsg: "Aucun résultat",
afterPageText: 'sur {0}'
});
// declare the source Grid
firstGrid = new Ext.grid.GridPanel({
height : 700,
bbar : pagingBar,
ddGroup : 'secondGridDDGroup',
store : firstGridStore,
columns : cols,
enableDragDrop : true,
stripeRows : true,
autoExpandColumn : 'name',
title : 'Element'
});
// create the destination Grid
secondGrid = new Ext.grid.GridPanel({
height : 700,
ddGroup : 'firstGridDDGroup',
store : secondGridStore,
columns : cols2,
enableDragDrop : true,
stripeRows : true,
autoExpandColumn : 'name',
title : 'Grid relative'
});
//Simple 'border layout' panel to house both grids
var displayPanel = new Ext.Panel({
//width : 650,
//height : 1000,
layout : 'table',
renderTo : 'panel',
//defaults : { flex : 1 }, //auto stretch
layoutConfig : {
//align : 'stretch'
columns: 3
},
items : [
firstGrid,
secondGrid
],
bbar : [
'->', // Fill
{
text : 'Reinitiaiser',
handler : function() {
//refresh source grid
//firstGridStore.loadData(myData);
firstGridStore.load({params:{start:0, limit:resultsPerPage}, waitMsg:'Chargement'});
//purge destination grid
secondGridStore.removeAll();
secondGridStore.load({params:{start:0, limit:resultsPerPage}, waitMsg:'Chargement'});
}
},
{
text : ' - '
},
{
text : 'Sauvegarder',
handler : //updateDB
function() {
var updated_data = new Array();
ds = secondGrid.store/*.getStore()*/;
//var id = ds.data.id;
var recordCount =ds.getTotalCount();
rows = ds.getRange(0,recordCount);
for (x=0; x < recordCount; x++)
{
updated_data[x] = rows[x].data;
}
json_data = Ext.encode(updated_data);
Ext.Ajax.request({
waitMsg : 'Enregistrement en cours...',
url : '/json/top/addrelationalbum',
timeout : 30000,
method : 'POST',
params: {
id_top : insertid,
type : type,
store:json_data,
count : ds
/*id_element : secondGrid.store.id*/
},
waitMsg: 'Veuillez patienter',
success: function(response){
Ext.MessageBox.alert("L\'album a bien été ajouté.");
},
failure: function(response){
Ext.MessageBox.alert('Erreur', "L'\album n'a pas été ajouté.");
}
});
}
}
]
});
// used to add records to the destination stores
var blankRecord = Ext.data.Record.create(fields);
/****
* Setup Drop Targets
***/
//deplacement de la grid droite vers la grid gauche
var firstGridDropTargetEl = firstGrid.getView().scroller.dom;
var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, {
ddGroup : 'firstGridDDGroup',
notifyDrop : function(ddSource, e, data){
var records = ddSource.dragData.selections;
Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
firstGrid.store.add(records);
firstGrid.store.sort('name', 'ASC');
return true
}
});
//deplacement de la grid gauche vers la grid droite
var secondGridDropTargetEl = secondGrid.getView().scroller.dom;
var secondGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {
ddGroup : 'secondGridDDGroup',
notifyDrop : function(ddSource, e, data){
var records = ddSource.dragData.selections;
Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
secondGrid.store.insert('',records);
//secondGrid.store.sort('name', 'ASC');
return true
}
});
var secondGridDropTargetE2 = secondGrid.getView().scroller.dom;
var firstGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetE2, {
ddGroup : 'firstGridDDGroup',
notifyDrop : function(ddSource, e, data){
var records = ddSource.dragData.selections;
Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
firstGrid.store.add(records);
//firstGrid.store.sort('name', 'ASC');
return true
}
});
firstGridStore.load({params:{start:0, limit:resultsPerPage, recherch:recherche}, waitMsg:'Chargement'});
secondGridStore.load({params:{start:0, limit:resultsPerPage}, waitMsg:'Chargement'});
}
function rendersupp(value, p, record)
{
return '<img src="/images/backOffice/delete2_16.png" onclick="del(\'' + value + '\', \'' + record.data.title + '\')" class="pointer" />';
}
function del(value, name)
{
Ext.MessageBox.confirm('Confirmation', 'Etes vous sur de vouloir supprimer l\'entrer "' + value + '" de la liste ?',
function (btn, text) {
if (btn == 'yes')
{
Ext.Ajax.request({
url : '/json/top/deletassosc',
timeout : 30000,
method : 'POST',
params: {id: value,
type : type,
},
waitMsg: 'Veuillez patienter',
success: function(response){
Ext.MessageBox.alert("Le top a bien été supprimé.");
//secondGridStore.load({params:{start:0, limit:resultsPerPage}, waitMsg:'Chargement'});
},
failure: function(response){
Ext.MessageBox.alert('Erreur', "Le top n'a pas été supprimé.");
}
});
}
}
);
}
function search()
{
recherchepanel.getForm().submit({
url: '/json/top/searchalbum',
waitTitle: 'Veuillez patienter',
waitMsg:'Recherche en cours ... ',
success: function(f,a)
{
console.log(total = Ext.util.JSON.decode(a.response.responseText).totalCount);
},
failure: function(f,a)
{
recherche = Ext.util.JSON.decode(a.response.responseText).recherche;
console.log(recherche);
console.log(firstGrid);
firstGrid.store.removeAll();
firstGrid.store.load({params:{start:0, limit:resultsPerPage, recherche:recherche}, waitMsg:'Chargement'});
}
});
}
On ne devrais jamais dire impossible avant d'avoir essayé.
L'étroitesse d'esprit est le pire des défaut
Tan qu'a mourir autant que ce soit en faisant ce qui me plait Configuration: Windows XP
Safari 532.0