2009-01-07 7 views
2

C'est le problème, lorsque je définis le ddl (liste déroulante ou boîte de sélection) je ne connais pas la valeur sélectionnée. Lorsqu'un utilisateur modifie une ligne, l'utilisateur peut sélectionner un élément dans la liste. Mais l'élément sélectionné n'est pas défini. Je veux définir l'élément sélectionné lorsque l'utilisateur clique sur un bouton pour modifier la ligne.Impossible d'obtenir l'objet d'une cellule dans jqGrid (jQuery)

La bonne façon, je pense, est d'obtenir le ddl qui a été créé lors de la construction de jqGrid et de définir la valeur sélectionnée.

$("#list").jqGrid({ 
    datatype: 'clientSide', 
    colNames: ['Edit', 'Delete', 'Save', 'Cancel', 'Location'], 
    colModel: [ 
      .... 
      .... 
     { name: 'Location', index: 'Location', width: 90, editable: true, edittype: "select", editoptions: { value: SI:System Integration ; IM:Information Management ; IA:Industrial Automation ; CI:Custom Instrumentation}}] 
}); 

Lorsque l'utilisateur clique sur le bouton Modifier je reçois les données de la liste ddl

var locationText = $("#list").getRowData(rowNum).Location; 

locationText =  
<SELECT id=1_Location class=editable><OPTION value="R   ">Rochester</OPTION><OPTION selected value="MA  ">Massachusetts</OPTION><OPTION value="DL  ">Data Librarian</OPTION><OPTION value="Buff  ">Buffalo/Niagara Falls</OPTION><OPTION value="Bing  ">Binghamton/Owego/Southern Tier</OPTION><OPTION value="Other  ">All other locations</OPTION><OPTION value="Alb  ">Albany and all points East</OPTION><OPTION value=""></OPTION></SELECT> 

Au lieu d'obtenir les données de la cellule dans le jqGrid je préférerais obtenir l'objet élément ddl dom.

L'autre idée que j'ai eue, mais que je ne trouve pas correcte, est d'utiliser locationText et de l'utiliser pour créer un nouvel élément ddl dom.

quelque chose comme ça.

var locationTmp2 = document.createElement("select"); 
locationTmp2.innerHTML = locationText; 
or 
locationTmp2.text= locationText; 

Y at-il un moyen facile de faire ce que je suis en train de faire. Je sais que je pourrais créer un nouveau dom élément puis sélectionnez ajouter chaque option, comme ceci

 //populate and set the selected item for locations. 
     var locationSelect = document.createElement("select"); 
     var arrayLocations = ('R:Rochester;MA:Massachusetts;DL:Data Librarian;Buff:Buffalo/Niagara Falls;Bing :Binghamton/Owego/Southern Tier;Other:All other locations;Alb:Albany and all points East;').split(";"); 
     for (var i = 0; i < arrayLocations.length - 1; i++) { 
      var optionItem = document.createElement("option"); 
      optionItem.value = trim(arrayLocations[i].split(":")[0]); 
      optionItem.text = trim(arrayLocations[i].split(":")[1]); 
      //check if this should be the selected item. 
      if (arrayLocations[i].indexOf(rowData.Location) != -1) 
       optionItem.selected = true; 
      locationSelect.add(optionItem); 
     } 

mais il devrait y avoir un moyen de saisir l'ensemble de l'élément de dom jqGrid.

Merci

+0

Est-ce que jqGrid possède une fonction d'édition de ligne intégrée? Crée-t-il le menu déroulant lorsque l'utilisateur clique sur modifier ou devez-vous le faire vous-même? –

Répondre

1

L'id élément sera égal au nom de la colonne que vous avez défini dans colModel. Dans votre cas, $ ("# Location") vous donnera l'élément que vous voulez et vous pouvez partir de là.

De même, assurez-vous d'utiliser le bon événement pour gérer ceci - beforeShowForm ou onInitializeForm en fonction de ce dont vous avez besoin. Voici une bonne discussion avec example.

+2

Votre lien est cassé ... –

Questions connexes