【发布时间】:2019-02-15 04:58:02
【问题描述】:
我在 DotVVM 中绑定 GridView 时遇到问题。我从 EF Core 加载数据并填充 GridViewDataSet 属性并将该属性绑定到 GridView。在 GridView 下方,我有用于向表中添加新行的表单。当我加载页面时,它确实绑定正确。它显示了它应该显示的所有行,但是当我使用表单添加新行时,它不会刷新 GridView 中的数据。调用回发,我在 chrome 的开发人员工具中看到它。它甚至可以正确发送 viewModelDiff,但不会刷新 UI。我错过了什么?
点html:
<dot:GridView DataSource="{value: Stables}" class="table table-responsive-sm table-sm" ShowHeaderWhenNoData="true">
<Columns>
<dot:GridViewTextColumn ValueBinding="{value: Id}" HeaderText="ID" />
<dot:GridViewTextColumn ValueBinding="{value: Name}" HeaderText="Name" />
</Columns>
</dot:GridView>
视图模型:
public GridViewDataSet<Stable> Stables { get; set; } = new GridViewDataSet<Stable>() { PagingOptions = { PageSize = 4 } };
public override Task PreRender()
{
LoadStables();
return base.PreRender();
}
public void LoadStables()
{
if (Stables.IsRefreshRequired)
{
Stables.LoadFromQueryable(_ctx.Stables);
}
}
public void AddStable()
{
_ctx.Stables.Add(new Stable()
{
Id = StableId,
Name = StableName
});
_ctx.SaveChanges();
Stables.RequestRefresh();
}
我正在使用 DotVVM.AspNetCore 2.0.2
【问题讨论】:
-
我试图重现这个问题,但它适用于我的情况。我可以想到它不起作用的几个原因: 1. 为 GridView 或其某些父级打开了服务器渲染。 GridView 在 HTML 中呈现其所有行,并且在处于服务器呈现模式时无法在回发中添加新行。 2. 有一些 JavaScript 错误导致页面无法更新 - 查看 Dev Tools Console 选项卡。 3. 数据集的页面大小为 4 - 也许新项目只是在另一个页面上。