0

次のようなビューが必要です。

[+] Group Name1 //これはアコーディオン メニューであるはずです

サブネーム| スケール1| スケール2| スケール3| Scale4 //これはテーブル ヘッダーであるはずです

あいうえお | お | お | お | O // 'Abc' はテキスト、' O ' はラジオ ボタン

XYZ | お | お | お | O // 上記の行と同じ

[+] グループ
名2 サブネーム | スケール1 | スケール2 | スケール3 | Scale4 //最後のテーブルと同じ

Pqr | お | お | お | オムノ
| お | お | お | 〇

[+] をクリックするとテーブルを取得できます。そして、データベース テーブルから値をフェッチする foreach ループを使用して、行のリストを生成しています。しかし、私が直面している問題は、1 つのテーブルで値を取得でき、すべての値がその中にリストされていることです。グループ化することはできますが、 「グループ名」に従って IT。ビューにバインドする方法を提案してください。また、ラジオボタンの操作方法を教えてください。このために、選択したラジオボタンの値をデータベーステーブルに保存する必要があります。

これが私の見解です:

<div class='toggle'>
      <h2>&nbsp;</h2>
          <h2>lList</h2>
      <div class="togglebox">

    <table width="50%">
    <br />
    <br />
     <tr>
     <th>
      Group Name
     </th>
     <th>
     Sub Name
     </th>
     <th>
     Scale1
     </th>
     <th>
     Scale2
     </th>
     <th>
     Scale3
     </th>
     <th>
     Scale4
     </th>
     </tr>

     <% int counter = 0; %>
      <% foreach (var item in Model.skills)
         { %>

     <tr>
        <td>
       <%=item.GroupName%>
       </td>
        <td>
       <%=item.SubName%>
       </td>
       <td>
       <%--<input type="radio" name="scale<%:counter %> />--%>
       <%:Html.RadioButton("scale" + counter, 0, item.Scale)%>
       <%--<%=Html.RadioButtonFor(m => item.Scale, "Scale1", new { @name = "scale" + counter })%>--%>
       </td>
       <td>
       <%:Html.RadioButton("scale" + counter, 1, item.Scale)%>
      <%-- <%=Html.RadioButtonFor(m => item.Scale,"Scale2", new { @name = "scale" + counter})%>--%>
       </td>
       <td>
        <%:Html.RadioButton("scale" + counter, 2, item.Scale)%>
       <%--<%=Html.RadioButtonFor(m => item.Scale,"Scale3", new { @name = "scale" + counter})%>--%>
       </td>
       <td>
        <%:Html.RadioButton("scale" + counter, 3, item.Scale)%>
       <%--<%=Html.RadioButtonFor(m => item.Scale,"Expert", new {@name = "scale" + counter})%>--%>
       </td>
     </tr>
       <% counter++;
         } %>


     </table>

これが私のモデルです:

public class Skill
{
    [DisplayName("Sub Name")]
    [Required]
    public string SubName { get; set; }


    [DisplayName("Group Name")]
    [Required]
    public string GroupName { get; set; }

    public bool Scale { get; set; }



}

これが私のDataAccessLayerです:

        public static DataTable GetAllList(string ID)
    {
        SqlConnection con = new SqlConnection(connect);
        con.Open();
        SqlCommand cmd = new SqlCommand("spGetSkillsList", con);
        cmd.Parameters.AddWithValue("@ID", 1);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds.Tables[0];
    }

ここに私のビジネスレイヤーがあります

 public static SkillMetricsViewModel GetAllList(string ID)
    {
        ListViewModel viewModel = new ListViewModel();
        DataTable dt = DAL.GetAllList(ID);

        List<Skill> skills = new List<Skill>();
        foreach (DataRow row in dt.Rows)
        {
            Skill skill = new Skill() { GroupName = row["GroupName"] != null ? row["GroupName"].ToString() : string.Empty, SubName = row["SubName"] != null ? row["SubName"].ToString() : string.Empty};
            skills.Add(skill);
        }
        IEnumerable<IGrouping<string, Skill>> test = skills.GroupBy(i => i.SkillGroupName);
        viewModel.skills = skills.GroupBy(x => x.SkillGroupName).SelectMany(r => r).ToList();
       return viewModel;

    }

これで私を助けてください。どんな種類の助けにも感謝します。

4

1 に答える 1

1

したがって、常に GroupName で並べ替える必要がある場合は、ビジネスレイヤーで linq を使用して次のようなことを行うことができます

viewModel.skills = skills.OrderBy(x => x.GroupName)
于 2013-04-10T18:14:01.990 に答える