1

少し難しいと思われることをしようとしています。私は ASP.NET や JQuery などの完全な初心者なので、アドバイスを求めてここにいます。

そのように表示される式を作成しました:

ここに画像の説明を入力

コードは次のようになります。

<table class="table table-striped table-bordered">
    <thead>
        <tr>
             <th>
                Room
            </th>
            <th>
                Room name
            </th>
            <th>
               User
            </th>
        </tr>
    </thead>
    <tbody>
         @for (int i = 0; i < Model._listPerson.Count(); i++) {
            <tr>
                <td>
                    @Html.EditorFor(m => m._listPerson[i].myValue.isSelected)
                </td>
                <td>
                    @Html.DisplayFor(m => m._listPerson[i].myValue.name)
                    @Html.HiddenFor(m => m._listPerson[i].myValue.name)
                    @Html.HiddenFor(m => m._listPerson[i].myKey)
                </td>
                <td>                       
                    <!--Obtain the KeyValuePair<int, List<PersonModel>> that correspond to the index.-->
                    @Html.DropDownListFor(m => m.selectedPerson[i], new SelectList(Model._list[i].myValue, "id", "name"))                   
                </td>

            </tr>
        }

    </tbody>
</table>
<p>Assign all selected rooms to user  @Html.DropDownListFor(m => m.useless, new SelectList(Model._list[0].myValue, "id", "name"))</p>

したがって、私がやりたいことの目的は、「割り当てられたユーザー」のすべてのフィールドを、テーブルの下部で選択されているユーザーの名前に更新することです。それを簡単に行う方法は?

ありがとう !

4

2 に答える 2

1

次のように、ループ内の DropDownLists にクラスを追加します。

@Html.DropDownListFor(m => m.selectedPerson[i], new SelectList(Model._list[i].myValue, "id", "name"), new { @class = "ddl" })      

次に、このスクリプトをページに追加します。

<script type="text/javascript">
  $(document).ready(function () {
    $('#useless').change(function () {
      var selected = $(this).val();
      $(".ddl").val(selected);
    });
  });
</script>
于 2013-07-30T16:06:56.147 に答える
0

ataravati のおかげで、今は大丈夫です。ソリューションを少し変更する必要がありました。これがJavaScriptです:

<script type="text/javascript">
  $(document).ready(function () {
    $('#useless').change(function () {
        var selected = $(this).val();
        $(':checkbox').each(function () {
            var tag = $(this).attr('id');
            tag = tag.replace(/^select/, "");
            tag = ".ddl" + tag;
            console.log("tag : " + tag);
            if ($(this).attr('checked'))
                $(tag).val(selected);
        });
    });
  });
</script>

ページを表示する新しいバージョンのコードは次のとおりです。

<tbody>
         @for (int i = 0; i < Model._listPerson.Count(); i++) {
            <tr>
                <td>
                    @Html.CheckBoxFor(m => m._listPerson[i].myValue.isSelected, new { id = "select"+i })
                </td>
                <td>
                    @Html.DisplayFor(m => m._listPerson[i].myValue.name)
                    @Html.HiddenFor(m => m._listPerson[i].myValue.name)
                    @Html.HiddenFor(m => m._listPerson[i].myKey)
                </td>
                <td>                       
                    @Html.DropDownListFor(m => m.selectedPerson[i], new SelectList(Model._list[i].myValue, "id", "name"), new { @class = "ddl"+i })                   
                </td>

            </tr>
        }
    </tbody>

そして今、それはうまくいっています!ありがとう !

于 2013-07-31T08:11:02.717 に答える