Как отобразить список C # внутри столбца веб-сетки на основе щелчка, не нажимая метод контроллера - PullRequest
0 голосов
/ 11 октября 2019

Хорошо, так что я уже некоторое время прижимаю голову к этому. У меня есть следующая структура 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();

Вышеуказанное выглядит так:

enter image description here

При более тщательном рассмотрении конкретной записи у меня следующая структура:

enter image description here

Как вы можете видеть на втором изображении, у меня есть List с именем selectedmemberaddress, число которых составляет 41 для конкретной записи. Это List выглядит следующим образом:

enter image description here

Наконец, я отображаю эту структуру в моем 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, поскольку в моей структуре уже есть сгруппированные данные.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

2 голосов
/ 11 октября 2019

Извините, я пока не могу оставлять комментарии, поэтому отправляю сюда, думаю, это может быть полезно для вас. Как создать вложенную веб-сетку с помощью функции Развернуть / Свернуть в ASP.NET MVC4

...