0

JQgrid に関して問題があります。

これが私のグリッドのコードです。「beforerowselect」と「loadcomplete」のclientsideeventsを使用しています
注:グリッドがリロードされるたびに、グリッドのリロードにロード完了を使用して
います。アイテムが選択されます。

<trirand:JQGrid ID="jqgrid" runat="server" Height="475px" Width="1510px" MultiSelect="false" ShrinkToFit="true" AutoWidth="true">
<ClientSideEvents BeforeRowSelect="beforeSelect" LoadComplete="loadComplete"/>


「beforeselectevent」でここで行うことは
、「itemid」の行 ID のセル値を取得することです。

「ItemID」の値を格納するセッション変数を作成し、それを var sessionItemID に格納して、「ロード完了イベント」で渡すことができるようにしました。

問題:しかし、ここにブレークポイントを挿入しようとするたびに、常に「値」が返されます。

function beforeSelect(rowid, e) {
                grid = $("#<%= jqgrid.ClientID %>");
                ItemID = grid.jqGrid('getCell', rowid, 'ItemID');
                var sessionItemID = '<%=Session["ItemID"] %>';
}


ここで「loadcomplete」イベント。ItemID を取得できるように、sessionItemID を渡しました。そのため、グリッド上のアイテムを更新するたびに。
ページがリロードされ、更新した項目が選択されます。

問題: リロード後、リロード後に項目が選択されません。

function loadComplete(sessionItemID ) {
                if (ItemID != 0 || ItemID != null) {
                    grid = $("#<%= jqgrid.ClientID %>");
                    grid.trigger("reloadgrid");
                    grid.jqgrid('setselection', "2" );
                }
            }

私が達成したいのはこれです(話を短くするために)
1.グリッドで行を選択すると、フォームがポップアップしてレコードを更新します。
2. レコードを更新した後、ユーザーはページを保存して閉じます。
3. グリッドがリロード
されます 4. 選択/更新された項目が記憶されます。

次に何をするか本当に迷っています。ありがとう

4

2 に答える 2

0

説明されている問題を解決するには、フォーム編集のreloadAfterSubmit: falseオプションを使用して、行編集の最後にグリッドが再ロードされるのを防ぐことができます。新しい行を追加しない場合、このオプションが最善の方法になる可能性があります。

afterSubmitまたは、コールバックまたはイベントを使用jqGridAddEditAfterSubmitして現在の選択を保存し、グリッドのテキスト読み込み後に復元することもできます。対応するコードは次のようになります。

$("#jqgrid").bind("jqGridAddEditAfterSubmit", function () {
    this.grid.selectionPreserver(this);
});
于 2013-04-16T07:43:40.013 に答える