2009-05-13 8 views
0

Appel à tous les gourous DWR! J'utilise actuellement Ajax inverse pour ajouter dynamiquement des données à une table dans une page Web.DWR addRows() avec ID d'élément

Quand je lance la méthode suivante:

public static void addRows(String tableBdId, String[][] data) { 
    Util dwrUtil = new Util(getSessionForPage()); // Get all page sessions 
    dwrUtil.addRows(tableBdId, data); 
} 

La nouvelle ligne est créée dans ma page web au besoin. Cependant, pour mettre à jour ces valeurs nouvellement créées plus tard, les balises doivent avoir un ID d'élément pour que j'y accède.

J'ai jeté un coup d'oeil au DWR javadoc et vous pouvez spécifier quelques options supplémentaires voir http://directwebremoting.org/dwr/browser/addRows, mais cela n'a pas beaucoup de sens pour moi, la documentation est très clairsemée.

Si quelqu'un pouvait me donner un indice quant à la façon dont je pourrais spécifier l'ID de l'élément pour les éléments td créés, je serais très reconnaissant. Sinon, si quelqu'un connaît une approche alternative, je serais ravi de le savoir.

Cordialement

Karl

Répondre

0

Le plus proche que je pouvais obtenir était de passer quelques arguments pour donner à l'élément un identifiant. Voir ci-dessous:

public static void addRows(String tableBdId, String[] data, String rowId) { 

    Util dwrUtil = new Util(getSessionForPage()); // Get all page sessions 

    // Create the options, which is needed to add a row ID 
    String options = "{" + 
      " rowCreator:function(options) {" + 
      " var row = document.createElement(\"tr\");" + 
      "  row.setAttribute('id','" + rowId + "'); " + 
        " return row;" + 
          " }," + 
      " cellCreator:function(options) {" + 
      " var td = document.createElement(\"td\");" + 
      " return td;" + 
       " }," + 
      " escapeHtml:true\"}"; 


    // Wrap the supplied row into an array to match the API 
    String[][] args1 = new String[][] { data }; 
    dwrUtil.addRows(tableBdId, args1, options); 
0

est cette ligne de votre code fonctionne vraiment ??

dwrUtil.addRows(tableBdId, data);

La DWR méthode addRows a besoin d'au moins 3 paramètres de 4 à travailler, ils sont:

  1. id: L'id de l'élément de table (de préférence un élément tbody);
  2. tableau: tableau (ou objet de DWR 1.1) contenant une entrée pour chaque ligne de la table mise à jour;
  3. cellfuncs: un tableau de fonctions (une par colonne) pour l'extraction des données de cellule à partir des données de ligne transmises;
  4. options: objet contenant diverses options.

Le id, tableau et cellfuncs sont nécessaires, et dans votre cas, vous devrez passer les les options aussi parce que vous souhaitez personnaliser la création de ligne et définir l'identifiant TD. check it out:

A l'intérieur de l'argument options, vous devez utiliser un paramètre appelé "cellCreator" pour informer votre propre façon de créer l'élément td html. Check it out:

// Use the cellFuncs var to set the values you want to display inside the table rows 
 
// the syntax is object.property 
 
// use one function(data) for each property you need to show on your table. 
 
var cellFuncs = [ 
 
\t \t   \t function(data) { return data.name_of_the_first_object_property , 
 
\t \t   \t function(data) { return data.name_of_the_second_object_property; } 
 
\t \t   \t ]; \t \t \t \t \t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t \t \t \t \t 
 
DWRUtil.addRows(
 
\t \t \t \t tableBdId, 
 
\t \t \t \t data, 
 
\t \t \t \t cellFuncs, 
 
\t \t \t \t { 
 
\t \t \t \t \t // This function is used for you customize the generated td element 
 
\t \t \t \t \t cellCreator:function(options) { 
 
\t \t \t \t \t \t \t var td = document.createElement("td"); 
 
\t \t \t \t \t \t \t // setting the td element id using the rowIndex 
 
\t \t \t \t \t \t \t // just implement your own id bellow 
 
\t \t \t \t \t \t \t td.id = options.rowIndex; 
 
\t \t \t \t \t \t \t return td; 
 
\t \t \t \t \t } 
 
\t \t \t \t }); \t \t