Хорошо, так что я уже некоторое время прижимаю голову к этому. У меня есть следующая структура Model
:
public class MemberAddressBook
{
[Key]
public long MemberID { get; set; }
[Required]
public string EmailAddress { get; set; }
[Required]
[Display(Name = "Title")]
[MaxLength(30, ErrorMessage = "Title cannot be longer than 30 characters.")]
public string Title { get; set; }
[Required]
[Display(Name = "Message")]
public string EmailMessage { get; set; }
[Required]
[Display(Name = "Selected Union Member")]
public IEnumerable<string> selectedMemberID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MemberCardNumber { get; set; }
public IEnumerable<MemberAddressBook> selectedMemberAddress { get; set; }
}
public class GroupMessageBookList: MemberAddressBook
{
public string Description { get; set; }
public long? MembershipTypeID { get; set; }
public List<GroupMessageBookList> selectedGroupsOnly { get;set; }
}
Моя структура данных выглядит следующим образом, которая заполняется из веб-API:
groupaddressbook.selectedGroupsOnly = listgroupaddressbook
.GroupBy(x => new { x.Description, x.MembershipTypeID })
.Select(gcs => new GroupMessageBookList()
{
Description = gcs.Key.Description,
MembershipTypeID = gcs.Key.MembershipTypeID,
selectedMemberAddress = gcs.ToList()
}).ToList();
Вышеуказанное выглядит так:
При более тщательном рассмотрении конкретной записи у меня следующая структура:
Как вы можете видеть на втором изображении, у меня есть List
с именем selectedmemberaddress, число которых составляет 41 для конкретной записи. Это List
выглядит следующим образом:
Наконец, я отображаю эту структуру в моем View
, используя WebGrid
, например:
<div style="overflow: auto!important; height:300px" class="transactionGrid">
@{
var grid = new WebGrid(source: Model.selectedGroupsOnly, canPage: false, canSort: true);
@grid.GetHtml(
tableStyle: "webGrid",
htmlAttributes: new { id = "SelectAllWebGrid" },
headerStyle: "grid-header",
rowStyle: "gridRow",
mode: WebGridPagerModes.All,
firstText: "<< First",
previousText: " < Previous",
nextText: "Next >",
lastText: "Last >>",
caption: "Group Details",
columns: grid.Columns(
grid.Column(
format: @<text>
<input type="checkbox" value="@item.MembershipTypeID" name="childChkbox" id="checkAll" />
</text>,
header: "{checkall}"
),
//grid.Column("Group Name/See Details", format: @<text>@Html.ActionLink((string)item.Description, "GetMemberDetailsOnGroups", "AddressBook", new { groupid = item.MembershipTypeID }, null)</text>, style: "titleColumn")
grid.Column("Description", "Group Name")
))
}
</div>
Как видите, я могу получить значения Key
из структуры. Мой вопрос заключается в том, чтобы я мог показать соответствующие значения selectedmemberaddress List
для каждого Key
в WebGrid
. Может быть, событие клика покажет этот список, но я не уверен, как этого добиться. Мне не нужно совершать вызовы AJAX, поскольку в моей структуре уже есть сгруппированные данные.
Любая помощь будет принята с благодарностью.
Спасибо