16

と にグループのリストがあり、選択したグループを値<select><input type="button" value="Add Selected">に追加し<table>ます。

追加されたグループのリストが に表示され、<table>[選択したものを追加] ボタンをクリックするたびに、JavaScript によって行が動的に追加されます。表の各行には、項目を表から削除する「削除」リンクがあります。

テーブルの内容を URL に POST したいのですが、これを行う方法がわかりません。

テーブルの各行に隠しフィールドを追加する必要がありますか? または、これを行うより良い方法はありますか?

どんな提案でも大歓迎です!

ロブ

4

5 に答える 5

10

テーブルをフォームでラップし、投稿したいがユーザーには表示しないデータを非表示の入力に入れます

<form method="post" action="">
    <!-- your table -->
    <input type="hidden" name="name" value="your value"/>
    <button type="submit">Post</button>
</form>
于 2012-05-07T21:02:30.873 に答える
6

私はそれをやった:

function sendTableArticles() {
        var columns = [
            'articulo.id',
            'articulo.descripcion',
            'unidadMedida.descripcion',
            'precio',
            'importe',
            'totalRequerido',
            'totalIngresado'
        ];

        var tableObject = $('#table_articles tbody tr').map(function (i) {
            var row = {};
            $(this).find('td').each(function (i) {
                var rowName = columns[i];
                row[rowName] = $(this).text();
            });

            return row;
        }).get();


        $.post('@{OrdenComprasDetalles.update()}',
                {objects:tableObject},
                function (response) {
                    console.log(response);
                }
        )
    }

コントローラーで

public static void update(List<OrdenCompraDetalle> objects){
        int i=0;
        renderJSON(i);
    }

だからそれは私のDTOです

@Entity(name = "ordencompradetalle")
public class OrdenCompraDetalle extends AbstractTableMapper {

    @ManyToOne
    public Articulo articulo;

    public Float precio;

    public Float importe;

    public Boolean ingresado;

    @Column(name = "total_requerido")
    public Float totalRequerido;

    @Column(name = "total_ingresado")
    public Float totalIngresado;

    @ManyToOne
    public OrdenCompra ordenCompra;

    @ManyToOne
    public UnidadMedida unidadMedida;

    @OneToMany(mappedBy = "ordenCompraDetalle")
    public List<Movimiento> movimientos;
}

私はそれを使用していますが、あまりにも便利です。あなたにも役立つことを願っています

于 2012-11-12T14:12:47.660 に答える
2

私は先日このようなことをしました。私の解決策は、Web サービスに送信できるテーブルからオブジェクトの配列を作成することでした。Web サービスは、オブジェクトの配列を予期する必要があります。

// Read all rows and return an array of objects
function GetAllRows()
{
    var myObjects = [];

    $('#table1 tbody tr').each(function (index, value)
    {
        var row = GetRow(index);
        myObjects.push(row);
    });

    return myObjects;
}

// Read the row into an object
function GetRow(rowNum)
{
    var row = $('#table1 tbody tr').eq(rowNum);

    var myObject = {};

    myObject.ChangeType = row.find('td:eq(1)').text();
    myObject.UpdateType = row.find('td:eq(2)').text();
    myObject.CustomerPart = row.find('td:eq(3)').text();
    myObject.ApplyDate = row.find('td:eq(9)').text();
    myObject.Remarks = row.find('td:eq(10)').text();

    return myObject;
}
于 2012-05-07T21:20:55.793 に答える
2
<form method="post" action="your_server_action">
  <table>
    <!-- Table row display elements -->
    <input type="hidden" name="name" value="your value"/>
  </table>
  <input type="submit" value="Submit"/>
</form>
于 2012-05-07T21:09:12.610 に答える
0

このように[]を追加して配列として選択する名前

<select name="modules[]" id="modules" class="inputbox" size="10" multiple="multiple">
<option value="1">Module 01</option>
<option value="2">Module 02</option>
<option value="3">Module 03</option>
</select>

送信後、このサンプルモジュール用に名前が付けられた配列が$_POSTにあると思います

于 2012-05-07T21:24:51.177 に答える