2

これが問題です。ddl(ドロップダウンリストまたは選択ボックス)を定義すると、選択した値がわかりません。ユーザーが行を編集するとき、ユーザーはリストから項目を選択できます。ただし、選択した項目は設定されていません。ユーザーがボタンをクリックして行を編集したときに、選択した項目を設定したい。

適切な方法は、jqGridのビルド時に作成されたddlを取得し、選択した値を設定することだと思います。

$("#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}}]
});

ユーザーが編集ボタンをクリックすると、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>

jqGridのセルからデータを取得する代わりに、domddl要素オブジェクトを取得したいと思います。

私が持っていたもう1つのアイデアは、正しいとは思いませんが、locationTextを使用し、それを使用して新しいddldom要素を作成することです。

このようなもの。

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

私がやろうとしていることをする簡単な方法はありますか?新しいdomselect要素を作成して、次のように各オプションを追加できることはわかっています。

        //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);
        }

しかし、jqGridからdom要素全体を取得する方法があるはずです。

ありがとう

4

1 に答える 1

1

要素 ID は、colModel で定義した列名と同じになります。あなたの場合、 $("#Location") は必要な要素を提供し、そこから移動できます。

また、必要に応じて beforeShowForm または onInitializeForm のいずれかで、適切なイベントを使用してこれを処理してください。ここでは、exampleを使用した適切な説明を示します。

于 2009-01-12T02:54:22.340 に答える