2013-04-10 1 views
0

мне нужно иметь вид, который выглядит примерно так:Сортировки Таблицы по Его ИмяГруппе, где данные извлекаются из базы данных с помощью MVC 2.0

[+] Группа Name1 // это должно быть меню аккордеона

Подзаголовок | Scale1 | ризуется масштабом2 | Scale3 | Scale4 // предполагается, что это заголовок таблицы

Abc | O | O | O | O // 'Abc' - текст, а 'O' - радиокнопка

XYZ | O | O | O | O // То же, что и выше строка

[+] Имя группы2
Подзаголовок | Масштаб1 | Scale2 | Scale3 | Scale4 // То же, что и последняя таблица

Pqr | O | O | O | O
Mno | O | O | O | O

Я могу получить таблицу нажатием [+]. И я генерирую список строк, используя цикл foreach, который извлекает значения из таблицы базы данных. Но проблема в том, что я могу получить значения в одной таблице, и все значения перечислены в ней, например: abc, xyz, .., pqr, mno, ... Но мне это нужно SORT IT в соответствии с его «Group Name», хотя я могу сгруппировать его. Пожалуйста, предложите, как мне связать его с представлением. Кроме того, может ли кто-нибудь предложить мне, как мне работать с радиокнопками. Для этого мне нужно сохранить выбранное значение радиоблока в таблице базы данных.

Вот мое мнение:

<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; 

    } 

Пожалуйста, помогите мне в этом. Заранее спасибо за любую помощь.

ответ

1

Так что, если вам просто нужно всегда сортировать по ИмяГруппы затем в бизнес-слое, который вы могли бы просто использовать LINQ, чтобы сделать что-то вроде

viewModel.skills = skills.OrderBy(x => x.GroupName) 
+0

Спасибо за вашу помощь pevious. – Novice