1

jqGridの複数のインスタンスを含むJSPページがあります。そのグリッドの1つの列には、その行が選択されているかどうかを表すチェックボックスがあります。jqGridのチェックボックスのような通常のHTMLが必要です-チェックされた/チェックされていないブール状態と実際の一意の値の両方を持っているもの:
<input type="checkbox" name="vehicle" value="Car" checked="checked" />

jqGridでは、チェックボックスに1つの値しか渡せないという制限に直面しています。jqGridのcolModelには、次のものがあります。

colModel:[
    {name:'assign', index:'assign', width:200, editable:true, edittype:'checkbox', formatter:"checkbox", formatoptions:{disabled : false}}
    ]

jqGridにデータを渡す際に、次のようなデータがあります。

var mydata = [
              {assign:"${assignBool}"}
           ];

ただし、colModel [] "assign"で設定される値は、チェックボックスがオンかどうかを決定するブール値か、チェックボックスがチェックされているかどうかを決定するためにチェックボックスに設定する実際の値のいずれかです。

ブール値を渡している間、ディスプレイでチェックボックスが正しくチェックされているのに、値(一意の識別値)を取得できませんでした。

実際の一意の値を渡して「割り当てる」間、すべてのチェックボックスは、すべてのチェックボックスに対して誤ったデフォルトのチェック状態を示していました。

チェックされた状態のブール値とチェックボックスの実際の一意の値の両方をjqGridの「割り当て」行に渡す方法を判別できませんでした。

以下のコードを使用してページ全体をトラバースし、すべてのチェックボックスの実際の一意の値を取得できるようにしたいと思います。

$("#editBtn").click(function() {
    var val = [];
    var checkedNames = '';
    $('input:checkbox:checked').each(function(index) {
        val[index] = $(this).val() + ',';
        checkedNames += val[index];
        }
    );  
    alert("Checked check box values: " + checkedNames);
});

上記の「割り当て」にブールチェック状態を渡すと、checkedNames変数に取得されるのは、True/FalseまたはYes/No値のリストであり、実際の値ではありません。

他の誰かが同様の問題に直面したことがありますか、または誰かがこの問題の解決策を持っていますか?私には、jqGridの制限のように思えるか、jqGridのそのような機能に気付いていないのかもしれません。この点での助けは本当にありがたいです。

4

1 に答える 1

1

カスタム動作を管理するためにjqGridでよく行うことの1つは、表示するHTMLをテキストとしてcolModelに渡すことです。editしたがって、上記のプロパティを 使用する代わりに、サーバーからのJSON応答でHTMLをテキストとして送信するだけです。

jqGridはこれをHTMLとしてレンダリングし、jQueryを使用して動作を管理できます(これはよく知っているようです)。

更新 たとえば、jQuery Sparklinesをグリッドに統合したかったので、サーバー上のコントローラー(ASP.NET MVCを使用しています)で次のように返します。

return Json(new
{
    total = (int)Math.Ceiling((double)data.Count / rows),
    page = 1,
    records = data.Count,
    rows = (from item in data
            select new
             {
                 id = "GR" + data.IndexOf(item),
                 cell = new object[] 
                 { 
                     item.Name,
                     "<span class=\"inlinesparkline\" values=\"" + item.SparklineData + "\"></span>"
                 }
             }).ToArray()
        });

私のjqGridでは、この列はcolModelにテキストとしてあります。

...
colModel: [
    { name: 'Name', index: 'Name' },
    { name: 'Sparkline', index: 'Sparkline', classes: 'sparkcell' }
],
...

これで、gridCompleteで、jQueryを使用して、.sparkcellセレクターを使用して必要なことをすべて実行できます。

...
gridComplete: function () {
    $('.sparkcell').sparkline();
},
...
于 2012-06-11T18:26:33.743 に答える