0

私は2つの方法のいずれかで入力されたjqGridを持っています - 送信ボタンはテーブルに行を作成し、jqGridの更新時にロードされます。また、グリッド上の行を選択すると、送信とキャンセル ボタンが表示され、ユーザーは以前に送信した項目を再送信できます。

(jqGrid での) 望ましい動作は、(1) アイテムがテーブルに送信されるときに jqGrid の更新時にメッセージが表示されること、および (2) ユーザーが & を選択したときに jqGrid で選択されたメッセージが再送信されることです。それらを再提出します。再送信/キャンセル ボタンは、行が選択されない限り表示されません。この時点で、ページの他の場所にあるコントロールはロックされ、ユーザーが選択を送信またはキャンセルするまで選択できなくなります。再送信すると、アイテムが再度追加され、グリッドが更新され、選択がクリアされ、再送信/キャンセル ボタンが非表示になります。キャンセルでは、グリッドの更新は行われませんが、行われた選択がクリアされ、再送信/キャンセル ボタンが非表示になります。

Firefox では、以前に送信された項目の 1 つが選択されると (たとえば、4 行が存在し、行 2 がクリックされた場合)、行 #1 が強調表示され、送信された場合、再送信されるのは行 1 (行 2 ではなく) です。 . 行がどの順序で選択されるかは問題ではないようですが、行 1 と 3 だけが、クリックされたときに選択済みとして強調表示されます。

IE では、いくつかの問題があります。まず、フッター行が表示されません。次に、行をクリックしてもボタンが表示されず、行が選択されているように見えません。

以下は、jqGrid のコードです。

    $("#myGrid").jqGrid({
        url: changedUrl,
        datatype: "xml",
        colNames: ["Destination", "Message Text", "Send Time"],
               colModel:[
            {name:"Destination",index:"Destination",width:col1width,align:"left", xmlmap:"Rowset>Row>Destination",sortable:false},
            {name:"MessageText",index:"MessageText",width:col2width,align:"left",xmlmap:"Rowset>Row>MessageText",sortable:false},
            {name:"SendTime",index:"SendTime",width:col3width,align:"left",xmlmap:"Rowset>Row>SendTime",sortable:false}
            ],
        viewrecords: true,
        caption: capMsg,
//      rowNum: nbrRows,
        rownum: 0,
        autowidth: false,
        //height: gridheight,
        height: "100%",
        width: gridwidth,
        //rowList:[10,20,30],
        toolbar: [true, "top"],
        pager: jQuery("#pager1"),
        sortname: "SendTime",
        defaults: {
            recordtext: "View {0} - {1} of {2}",
            emptyrecords:  "No records to view",
            pgtext: "Page  {0} of {1}"
            },

        // code to view the row follows
        onSelectRow:  function(id) {
        //  $(this).jqGrid("viewGridRow", id, {closeOnEscape:true});
            var gridRow = $(this).jqGrid("getRowData",id);
            $(".sendAgainControls").show();
            $("#dList").prop("disabled", true);
            $("#cmlist").prop("disabled", true);
            $("#SendMsg").prop("disabled", true);

            $("#ReSend").click(function() {
                //console.log("ReSend Button was pressed.  Dest = " + gridRow.Destination + "  CM = " + gridRow.MessageText);
                ReSendMessage(gridRow.Destination, gridRow.MessageText);
                $(".sendAgainControls").hide();
                $("#dList").prop("disabled", false);
                $("#cmlist").prop("disabled", false);
                //$(this).jqGrid("resetSelection");

                });

            $("#Cancel").click(function() {
                $(".sendAgainControls").hide();
                $("#dList").prop("disabled", false);
                $("#cmlist").prop("disabled", false);
                $("#myGrid").jqGrid("setSelection", "-1");
                ReloadGrid();
                });
            },

        xmlReader:  { 
            root: "Rowsets", 
                    row: "Row",
            repeatitems: false,
            id: "Destination"
            }
        });

各ブラウザーに複数の問題があるため、どこから始めればよいかわかりません。

グリッドの HTML は次のとおりです。

<table id="myGrid" border="0" cellpadding="0" cellspacing="0"  style="width: 80%">
<div id="pager1"></div>
</table>
<table id="ReSend" border="0" cellpadding="0" cellspacing="0"  style="width: 80%">
<tr>
<td class="sendAgainControls"  align="center">
<div id="sendAgain">
<input id="ReSend" type="submit" value="Re-Send Selected"  />
<input id="Cancel" type="submit" value="Cancel Re-Send"  />
</div>
</td>
</tr>
</table>

各ブラウザで何が起こっているかについての考えをいただければ幸いです。

ありがとう、

S

4

1 に答える 1

0

これはメモリの問題だったに違いありません。3日前に上記のように実行しましたが、システムを再起動すると、すべての問題が解消されました.

于 2013-05-20T14:21:13.283 に答える