@rendermode InteractiveServer @if (GroupSelected) { TEXT Radio @* *@ @switch (@GropType) { case GropType.Stack: @foreach (var question in QuestionGroupElement.GroupsQuestions) { } break; case GropType.Grid: @foreach (var question in QuestionGroupElement.GroupsQuestions) { } break; default: 布局类型: 未知 break; } } else { @switch (@GropType) { case GropType.Stack: @foreach (var question in QuestionGroupElement.GroupsQuestions) { } break; case GropType.Grid: @foreach (var question in QuestionGroupElement.GroupsQuestions) { } break; default: 布局类型: 未知 break; } } @code { [Parameter] public GropType GropType { get; set; } = GropType.Stack; [Parameter] public bool GroupSelected { get; set; } [Parameter] public QuestionGroupElement QuestionGroupElement { get; set; } [Parameter] public bool IsSelected { get; set; } private int preSelected = 0; protected override void OnInitialized() { QuestionGroupElement = new QuestionGroupElement(); QuestionGroupElement.GroupsQuestions = new List(); } private void HandleMoveUp(int index) { if (index >= QuestionGroupElement.GroupsQuestions.Count) return; QuestionGroupElement.GroupsQuestions.MoveUp(QuestionGroupElement.GroupsQuestions[index]); ReOrderIndex(); StateHasChanged(); } private void HandleMoveDown(int index) { if (index >= QuestionGroupElement.GroupsQuestions.Count) return; QuestionGroupElement.GroupsQuestions.MoveDown(QuestionGroupElement.GroupsQuestions[index]); ReOrderIndex(); StateHasChanged(); } private void HandleQuestionDeleted(int questionId) { var questionToRemove = QuestionGroupElement.GroupsQuestions.FirstOrDefault(q => q.Index == questionId); if (questionToRemove != null) { QuestionGroupElement.GroupsQuestions.Remove(questionToRemove); StateHasChanged(); } ReOrderIndex(); } private void ReOrderIndex() { foreach (var que in QuestionGroupElement.GroupsQuestions) { que.Index = QuestionGroupElement.GroupsQuestions.IndexOf(que); } } public void OnAddText() { QuestionGroupElement.GroupsQuestions.Add(new QuestionElement { Index = QuestionGroupElement.GroupsQuestions.Count }); StateHasChanged(); } public void OnAddRadio() { QuestionGroupElement.GroupsQuestions.Add(new QuestionElement { Index = QuestionGroupElement.GroupsQuestions.Count, QuestionType = BaseQuestionType.Radio }); StateHasChanged(); } private void HandleClick(MouseEventArgs e) { HandleSelected(-1); } private void HandleSelected(int id) { var ques = QuestionGroupElement.GroupsQuestions.FirstOrDefault(x => x.Index == preSelected); if (ques != null) ques.IsSelected = false; if (id < 0) return; var ques2 = QuestionGroupElement.GroupsQuestions.FirstOrDefault(x => x.Index == id); if (ques2 != null) ques2.IsSelected = true; preSelected = id; StateHasChanged(); } }