0

コードとその説明の完全なリスト、DB 内の 24 レコードがあります。

ストアド Proc を使用して DB から選択し、これを VIEW() に出力します。

ユーザーがこれらのチェックボックスをクリックし、希望する数をクリックすると、DB の別のユーザー テーブルにポストされます。

このユーザー テーブルをスキャンして、彼がチェックしたデータを取得します.. 24 個中 10 個のチェックボックスをチェックしたとします。

ユーザーがチェックした関連ボックスを含むすべてのチェックボックスを出力できるようにしたいと考えています。すべてのチェックボックスがVIEWBAGにあるリストにあるデータがあります。また、ビューでこれにアクセスできるように、ビューバッグの別のリストにもチェックしたデータを含むユーザーテーブルがあります。

すべてのチェックボックスを出力するだけでなく、コントローラーから渡された VIEWBAG を使用してユーザーがクリックしたチェックボックスもチェックするにはどうすればよいですか?

以下のコードは、すべてのデータをループし、すべてのチェックボックスを出力します。新しい VIEWBAG.USER にあるものを使用して、以下の関連するボックスをチェックする必要があります。

    @foreach (var item in ViewBag.Expertise)
    {
        l_count = l_count + 1;
        l_code = l_code + 1;

        if (l_count == 1)
        {                                                          
            <td class="tdcheckbox">
                <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" />
                <b>@item.expertiseDesc</b>
            </td> 
            else if (l_count < 3)
            {    
                <td class="tdcheckbox">
                    <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" />
                    <b>@item.expertiseDesc</b>
                </td>
            }
            else if (l_count == 3)
            {           
                <td class="tdcheckbox">
                    <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" />
                    <b>@item.expertiseDesc</b>
                </td>                                                            
            }
            else if (l_count % 2 == 0 && l_count == 4)
            {         
                <td class="tdcheckbox">
                    <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" />
                    <b>@item.expertiseDesc</b>

                @if (@item.expertiseCode == "OTHER")
                {
                    @Html.TextBox("@item.otherExpertise")
                    <br /><font color="red">Comma separate specific expertise</font>
                }
                </td>   

                @:<tr></tr>
                l_count = 0;
4

1 に答える 1

0

あなたの質問を正しく理解できれば、次のことができます。

これをあなたのビューの一番上に置きます

@{var ids = (List<int>)ViewBag.USERS);

次に、すべてのチェックボックスをループしているときに、次のことができます。

if (ids != null && ids.Contains(item.expertiseCode))
{
   <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" checked />
}
else
{
  <input type="checkbox" name="code@(l_code)" value="@item.expertiseCode" />
}
于 2012-05-09T17:30:53.260 に答える