Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor шаблон компонента / 1 сообщений из 1, страница 1 из 1
02.09.2020, 13:43
    #39994785
Blazor шаблон компонента
Здравствуйте

Интересует частичная обработка данных в шаблонном компоненте перед передачей его в место вызова

Файл компонента:

MyComponent.razor
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@typeparam TItem

<table onmousewheel="@OnWheel">
...
</table>

@code {
    [Parameter] public EventCallback<WheelEventArgs> OnWheel { get; set; }

    [Parameter] public IEnumerable<TItem> Items { get; set; }
}



Вызов в коде:

MyTest.razor
Код: c#
1.
2.
3.
4.
5.
@page "/mytest"

<MyComponent Items="ToData" OnWheel="OnWheel">
...
</MyComponent Items>



MyTest.razor.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using System.Collections.Generic;
using TestMysql.Data;
using TestMysql.Services;

namespace TestMysql.Pages
{
    public partial class MyTest
    {
        [Inject]
        ITestService Service { get; set; }

        List<Test> ToData = new List<Test>();
        int Row = 0;
        int Limit = 22;
        int RowsCount = -1;
        int RowsInWheel = 3;
        string Filter = "";

        void OnWheel(WheelEventArgs e)
        {
            int rows = (int)e.DeltaY / 100;
            if (rows > 0)
            {
                Row += RowsInWheel  * rows;
                if (Row >= RowsCount - Limit) Row = RowsCount - Limit;
            }
            else Row -= RowsInWheel  * -rows;
            if (Row < 0) Row = 0;
            LoadData();
        }

        protected override void OnInitialized()
        {
            LoadData();
        }

        void LoadData()
        {
            ToData = Service.Get(Limit, Row, Filter);
            RowsCount = Service.GetRowsCount(Filter);
            StateHasChanged();
        }
    }
}



Это все прекрасно работает. Данные в таблице прокручиваются.
Но хочется перенести обработку прокрутки в компонент.

Я добавляю 4 недостающих параметра в мой компонент
Также добавляю процедуру которая вычисляет ту самую стартовую строку в таблице
Но как при инициализации прокрутки в компоненте сначала вычислялся Row и уже после вычисления
происходила инициализация событие и передавала Row и Filter в качестве параметров.

MyComponent.razor
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
@typeparam TItem

<table onmousewheel="@OnWheel">
...
</table>

@code {

    [Parameter] public int RowsCount { get; set; } = 0;

    [Parameter] public int RowsInPage { get; set; } = 22;

    [Parameter] public int RowsInWheel { get; set; } = 3;

    [Parameter] public string Filter { get; set; } = "";

    [Parameter] public EventCallback<WheelEventArgs> OnWheel { get; set; }

    [Parameter] public IEnumerable<TItem> Items { get; set; }

        int Row = 0;

        void OnWheelEvent(WheelEventArgs e)
        {
            int rows = (int)e.DeltaY / 100;
            if (rows > 0)
            {
                Row += RowsInWheel * rows;
                if (Row >= RowsCount - RowsInPage) Row = RowsCount - RowsInPage;
            }
            else Row -= RowsInWheel * -rows;
            if (Row < 0) Row = 0;
        }

}
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor шаблон компонента / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]