C# Blazor组件在StateHasChanged()之后未更新
我有一个Blazor服务器端页面,其中包含以下内容:C# Blazor组件在StateHasChanged()之后未更新,c#,blazor,blazor-server-side,C#,Blazor,Blazor Server Side,我有一个Blazor服务器端页面,其中包含以下内容: @foreach (var s in OSTs) { <div class="alert" style="height: 30px; background:@s.Color; color: @s.TextColor;"> <div class="form-row"> <div class="co
@foreach (var s in OSTs)
{
<div class="alert" style="height: 30px; background:@s.Color; color: @s.TextColor;">
<div class="form-row">
<div class="col-sm-3"><strong>@s.Stage</strong><br />@s.Description</div>
<OpportunitiesStageDiv MyEditOst="@s" UpdateIt="AddOrEditStage"></OpportunitiesStageDiv>
<div class="badge badge-primary" @onclick="() => MoveItUp(s)" style="cursor: pointer; width: 6rem;"><i class=" oi oi-arrow-top"></i> Move Up</div>
<div class="badge badge-primary" @onclick="() => MoveItDown(s)" style="cursor: pointer; width: 6rem;"><i class="oi oi-arrow-bottom"></i> Move Down</div>
<div class="badge badge-primary">@s.Id - @s.StageOrder</div>
</div>
</div>
}
示例I的列表如下:
<div class="badge badge-primary" @onclick="() => EditStage(MyEditOst.Id)" style="cursor: pointer; width: 6rem;">Edit Stage</div>
<Modal @ref="@EditModal">
<Title>Edit Opportunity Stage</Title>
<Body>
<EditOpportunityStage EditOSt="@MyEditOst" Complete="AddOrEditStage"></EditOpportunityStage>
</Body>
<Footer>
<button type="button" class="btn btn-secondary" data-dismiss="modal" @onclick="() => EditModal.Close()">Close</button>
</Footer>
</Modal>
@code {
[Parameter]
public OpportunityStagesTemplate MyEditOst { get; set; }
private Modal EditModal = new Modal();
[Parameter]
public EventCallback<int> UpdateIt { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
}
private void EditStage(int SId)
{
EditModal.Open();
}
private void AddOrEditStage(int Completed)
{
if (Completed == 99)
{
}
EditModal.Close();
}
}
<div 1 edit moveup movedown>
<div 2 edit moveup movedown>
<div 3 edit moveup movedown>
当我升一级的时候
<div 1 edit moveup movedown>
<div 3 edit moveup movedown>
<div 2 edit moveup movedown>
然后单击Div3的第2行上的edit for now,它将显示编辑,就像是Div2一样。尽管上移和下移功能已经更新了数据库并正确地更新了UI,以便在移动列表时按顺序显示列表,但组件似乎仍然保留了呈现UI上的位置,就好像DIV 2位于第二行,DIV 3位于第三行一样。有什么建议吗
下面是呈现页面的示例:
仔细阅读文档后,我找到了一个简单的解决方案。我发现如果使用:
protected override void OnParametersSet()
{
...
}
my modal上的编辑表单显示正确的信息。OnParameterSet允许我更新任何局部组件变量,即使在OnInitialized()上提供这些变量的原始参数已设置
谢谢,我希望这个答案对大家都有帮助
protected override void OnParametersSet()
{
...
}