0

座席のマップ (オンライン劇場座席予約のような座席予約システム) を作成しており、選択した座席を取得したいと考えています。CSS クラスに基づいて選択した座席を取得し、それを var に格納できますが、そのオブジェクトを文字列に変換してコード ビハインドに渡すことはできません。どうすればこれを達成できますか?

これはjqueryコードです

 $(function () {
    //When an available seat is clicked on
    $('.seat.available').click(function () {
        //Toggle selection for this seat
        $(this).toggleClass('selected');
    });

    //When "Purchase" button is clicked
    $("#Purchase").click(function () {
        //Grab the selected seats
        var selectedSeat = $(".seat.selected").toArray();

        var selected = $(".seat.selected");
        if (selected.length == 0) {
            alert("No seats were selected.");
        }
        else {
            alert(selected.length + ' seats were selected.');

        }
        $('#hdCountrID').val(selectedSeat);//giving value to hidden field
    });
});

これは隠しフィールドに渡され、そこからデータを抽出するために以下を使用します

var elem =hdCountrID.Value;
Label1.Text = "selected seat is" + elem;//used a label to display value

しかし、これは「選択された座席は[対象オブジェクト]です。

そのオブジェクトを文字列に変換するにはどうすればよいですか。データベースに送信する必要があるためです。
EDIT:Div タグはリピーターで囲まれており、コード ビハインドには PoCo クラスがあり、このリピーターのソースとしてバインドされています

4

1 に答える 1

0

selectedSeat は配列なので [object object]

配列内の1つのアイテムに設定できます

$('#hdCountrID').val(selectedSeat[0]);

または、それらすべてを何らかの形の文字列に結合して、後ろで分割することもできます。

そのようです

$('#hdCountrID').val(selectedSeat.join(","))

それから:

var elem = hdCountrID.Value.Split(',');

その後、コード ビハインドに配列が含まれます。

テストされていませんが、理論は正しいはずです。

編集:申し訳ありませんが、もう少し複雑だと思います。チェックボックス項目の値を取得したい。そうでしょう?したがって、最初に選択したすべての値から文字列を作成する必要があります。$('.seat.selected') に対して each ループを使用して、 $(this).val() をコンマ区切りの文字列に出力することを検討します

編集:

このコードは、カンマ区切りの文字列の値で隠しフィールドを設定するように機能します。

<script type="text/javascript">
    $(function () {
        //When an available seat is clicked on
        $('.available').click(function () {
            //Toggle selection for this seat
            $(this).toggleClass('selected');
        });

        //When "Purchase" button is clicked
        $("#Purchase").click(function () {
            //Grab the selected seats

            var selectedItemIdString = "";

            $(".selected").each(function (index) {
                selectedItemIdString += $(this).attr("data-id") + ",";
            });
            $('#hdCountrID').val(selectedItemIdString);

        });
    });
</script>

<input type="hidden" id="hdCountrID" name="hdCountrID" />
<div class="seat available" data-id="1">
    Seat 1
</div>
<div class="seat available" data-id="2">
    Seat 2
</div>

<div id="Purchase">Purchase</div>

次に、コードビハインドで文字列を次のように分割します

string[] SplitIds = hdCountrID.Value.Split(',', StringSplitOptions.RemoveEmptyEntries);

foreach(var sId in SplitIds)
{
    // quick way to get it as in int. but not the safest int i = int.Parse(sId);
}
于 2013-10-01T20:00:49.277 に答える