Radzen.Blazor의 DatePicker에서 캘린더 대화 상자 표시
Radzen.Blazor의 DatePicker를 대화 상자에서 표시
소개
<본 기사의 대상자>
Blazor(블레이저)를 시작했지만, 다이얼로그 표시 & 반환이 잘 움직이지 않는 사람
<기사 개요>
Radzen.Blazor는 매우 강력한 전면 프레임 워크를 제공하지만 DialogService 주위가 다루기 어렵다고 느꼈기 때문에 일반적인 EventCallback에서 결과를 반환하는 방법에 대한 설명입니다.
참고 URL: h tps://b 라 d 젠. 코 m/아아 g
개발 환경
Visual Studio 2019 v16.4.5(Bootstrap v4.3.1)
Radzen.Blazor v2.1.20
설정
htps : // / cs. mic로소 ft. 코 m / 그럼 jp / ぃ す あ ls つぢ お / い ん た lぃぃ w = vs - 2019
파일 > 새로 만들기 > 프로젝트...에서 새 프로젝트를 만듭니다.



작성하면 다음 구성으로 솔루션이 작성됩니다.

h tps://b 라 d 젠. 코 m / 게 ts r d
【F5】로 빌드 실행됩니다.
레거시 Edge는 대응하고 있지 않으므로 최신 Edge를 추천합니다. Chrome에서도 움직이지만 Edge가 더 빠릅니다.

방법
기본 구성 변경
NavMenu.razor를 변경하여 캘린더 화면을 불러올 수 있습니다.
25행에 다음을 삽입한다.
NavMenu.razor
<li class="nav-item px-3">
<NavLink class="nav-link" href="calendar">
<span class="oi oi-calendar" aria-hidden="true"></span> Calendar
</NavLink>
</li>
새 파일 추가
다음 두 가지를 추가합니다.
・Calendar.razor : 캘린더 화면(위의 내비게이션 메뉴의 천이처)
· CalendarDialog.razor : 캘린더 화면의 버튼을 눌러 표시하는 캘린더 대화 상자 화면
Calendar.razor
@page "/calendar"
<h3>Calendar</h3>
<div>日付:@CurrentDatetimePrint</div>
<RadzenButton Text="ダイアログ表示" Click="RadzenButton_Click"></RadzenButton>
<CalendarDialog @ref="calendarDialog" currentDatetime="_currentDatetime" OnSelected="CalendarDialog_Selected"></CalendarDialog>
@code {
private CalendarDialog calendarDialog { get; set; }
private DateTime _currentDatetime { get; set; } = DateTime.Now;
public string CurrentDatetimePrint
{
get
{
return string.Format("{0}", _currentDatetime.ToString("yyyyMMdd"));
}
}
private void RadzenButton_Click()
{
calendarDialog.Open();
}
private void CalendarDialog_Selected(DateTime result)
{
_currentDatetime = result;
}
}
CalendarDialog.razor
<div class="modal @ModalClass" tabindex="-1" role="dialog" style="display:@ModalDisplay">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<RadzenDatePicker TValue="DateTime" Inline="true" Change="@(args => Change(args, "Calendar", "MM/dd/yyyy"))" />
</div>
<div class="modal-footer">
<button @onclick="OnClickOK">OK</button>
<button @onclick="OnClickCancel">Cancel</button>
</div>
</div>
</div>
</div>
@if (ShowBackdrop)
{
<div class="modal-backdrop fade show"></div>
}
@code {
[Parameter]
public DateTime currentDatetime { get; set; } = DateTime.Now;
[Parameter]
public EventCallback<DateTime> OnSelected { get; set; }
private DateTime _resultDatetime;
public string ModalDisplay = "none;";
public string ModalClass = "";
public bool ShowBackdrop = false;
public void Open()
{
ModalDisplay = "block;";
ModalClass = "Show";
ShowBackdrop = true;
StateHasChanged();
}
public void Close()
{
ModalDisplay = "none";
ModalClass = "";
ShowBackdrop = false;
StateHasChanged();
}
DateTime calendarDialogResult = DateTime.Now;
void Change(DateTime? value, string name, string format)
{
_resultDatetime = (DateTime)value;
StateHasChanged();
}
private void OnClickOK()
{
OnSelected.InvokeAsync(_resultDatetime);
Close();
StateHasChanged();
}
private void OnClickCancel()
{
OnSelected.InvokeAsync(currentDatetime);
Close();
StateHasChanged();
}
}
포인트로서는
"
그래서 UI가 어딘가에 붙어 있지 않은 것이 단점입니다.

Web시스템 개발에서는, WindowsForm과 같이 다이얼로그가 다른 화면으로 나누어져 있지 않기 때문에 불편했습니다. Blazor는 다이얼로그를 컴퍼넌트화해, Javascript 구문 없이 쓸 수 있으므로, 다른 화면으로서 포착해 개발할 수 있는 것이 좋네요.
또, Blazor는 반년 이전의 개인 사이트 정보는 그다지 참고가 되지 않을 정도로 사양 변경이 발생하고 있습니다.
비망록으로서 자크리 썼습니다만, 향후도 사양이 바뀔 가능성이 있기 때문에, 나중에 재검토합니다.
데모

끝에
Web시스템 개발에서는, WindowsForm과 같이 다이얼로그가 다른 화면으로 나누어져 있지 않기 때문에 불편했습니다. Blazor는 다이얼로그를 컴퍼넌트화해, Javascript 구문 없이 쓸 수 있으므로, 다른 화면으로서 포착해 개발할 수 있는 것이 좋네요.
또, Blazor는 반년 이전의 개인 사이트 정보는 그다지 참고가 되지 않을 정도로 사양 변경이 발생하고 있습니다.
비망록으로서 자크리 썼습니다만, 향후도 사양이 바뀔 가능성이 있기 때문에, 나중에 재검토합니다.
Reference
이 문제에 관하여(Radzen.Blazor의 DatePicker에서 캘린더 대화 상자 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/onsen_koichi/items/0d9ebbb88512c35af1c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)