Blazor QuickGrid — попытка дважды щелкнуть строку или использовать кнопку

Я использую предварительную версию QuickGrid.

У меня есть базовый QuickGrid в Blazor для списка пользователей. В идеале я хочу иметь возможность дважды щелкнуть строку пользователя, чтобы открыть модальное окно редактирования.

Первый вопрос: можно ли как-то создать код, который позволит дважды щелкнуть строку QuickGrid? Я вижу, что это не та функциональность, которую легко включить.

Во-вторых: если это невозможно (или оно того не стоит), есть ли хороший пример столбца QuickGrid, который будет создавать кнопку «Редактировать» в каждой строке, которая будет отображать модель для этого конкретного пользователя? У меня тоже настроены фильтры. Я не уверен, что это усложняет ситуацию.

Я могу добавить немного кода, но на самом деле это просто базовый фильтруемый QuickGrid, который у меня есть прямо сейчас. В основном я просто проверяю, знает ли кто-нибудь хорошие примеры.

1 ответ

На данный момент (ноябрь 2023 г.) встроенного способа нет.

Однако с помощью столбцов шаблона вы можете добавить это. В качестве примера я создал целую страницу при наведении и выделил ее двойным кликом:

         @page "/"
    @rendermode InteractiveServer
    
    @using Microsoft.AspNetCore.Components.QuickGrid
    
    <h6><b>DoubleClick row to select Person</b></h6>
    <QuickGrid Items="@filteredList" TGridItem="Person">
        <TemplateColumn Title="LastName" Class="td-width" SortBy="GridSort<Person>.ByDescending(x => x.LastName)">
            <div @onmouseover="()=>mouseOver(context.Id)"
                 class="selected-@context.Id">
                <div class="content">@context.LastName @context.Id</div>
            </div>
        </TemplateColumn>
        <TemplateColumn Title="FirstName" Class="td-width" SortBy="GridSort<Person>.ByDescending(x => x.FirstName)">
            <div @onmouseover="()=>mouseOver(context.Id)"
                 class="selected-@context.Id">
                <div class="content">@context.FirstName</div>
            </div>
        </TemplateColumn>
    </QuickGrid>
    <div class="m-4">
        <h6>Details for<br/><b>  @currentItem.FirstName @currentItem.LastName</b></h6>
        <b>Id: @currentItem.Id</b>
    </div>
    <style>    
        .selected-@currentItem.Id{background:yellow;}
    
    
         .td-width {border: 1px solid #aaa;padding: 0 !important;user-select: none;}
         .td-width > div {width: calc(100%); cursor: pointer;display: inline-block;padding: 0.1rem;
         }
       td.td-width div.content {
            display: inline-block;
            padding: 0;
        }
    
    </style>
    
    @code {
        IQueryable<Person> filteredList;
        
    
        Person currentItem;
    
        protected override void OnInitialized()
        {       
            filteredList = Person.DataList.AsQueryable();
    
            currentItem = Person.DataList.First();
        }
        int hoverId;
    
    
        void clickValue(int id)
        {
            currentItem = Person.DataList.Where(p => p.Id == id).FirstOrDefault();
            
        }
    
        
        public class Person
        {
            public static List<Person> DataList= new(){
                new(){Id=1,LastName="Seinfeld",FirstName="Jerry"},
                new(){Id=2,LastName="Benes",FirstName="Elaine"},
                new(){Id=3,LastName="Saccamano",FirstName="Bob"}
                };
    
            public int Id { get; set; }
            public string LastName { get; set; }
            public string FirstName { get; set; }
        }
    }
Другие вопросы по тегам