首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DotVVM DataPager不工作

DotVVM DataPager不工作
EN

Stack Overflow用户
提问于 2017-07-26 14:32:49
回答 2查看 203关注 0票数 1

使用DataPager的dothtml表:

代码语言:javascript
复制
<bp:GridView DataSource="{value: UserRoleGroupListDTOs}" class="table table-bordered table-hover dataTable">
                <Columns>
                    <%--<dot:GridViewTextColumn ValueBinding="{value: Name}" HeaderText="Název" Events.Click="{command: GoToDetail() }"/>--%>
                    <bp:GridViewTemplateColumn HeaderText="{resource: eCENTRE.Common.Resources.Admin.Common.Name}">
                        <dot:RouteLink Text="{value: Name}" RouteName="UserRoleGroupDetail" Param-Id="{value: Id}" />
                    </bp:GridViewTemplateColumn>
                    <bp:GridViewCheckBoxColumn ValueBinding="{value: IsBlocked}" HeaderText="{resource: eCENTRE.Common.Resources.Admin.Common.Forbidden}" IsEditable="true"/>
                    <bp:GridViewTemplateColumn HeaderText="{resource: eCENTRE.Common.Resources.Admin.Common.Delete}" CssClass="align center">
                        <%--<i class="glyphicon glyphicon-remove remove-from-list" style="color:red;">
                        </i>--%>
                        <dot:Button class="btn btn-default" Click="{command: _parent.DeleteUserRoleGroup(Id)}" Text="{resource: eCENTRE.Common.Resources.Admin.Common.Delete}"/>

                    </bp:GridViewTemplateColumn>
                </Columns>

            </bp:GridView>
            <bp:DataPager DataSet="{value: UserRoleGroupListDTOs}"/>

函数呈现器中的ViewModel和init:

代码语言:javascript
复制
public GridViewDataSet<UserRoleGroupListDTO> UserRoleGroupListDTOs { get; set; }

    private readonly IUserRoleGroupFacade userRoleGroupDetailFacade;
    private readonly UserRoleGroupCrudFacade crudFacade;

    public UserRoleGroupListViewModel(IUserRoleGroupFacade userRoleGroupDetailFacade, UserRoleGroupCrudFacade crudFacade)
    {
        this.userRoleGroupDetailFacade = userRoleGroupDetailFacade;
        this.crudFacade = crudFacade;
    }

    public override Task Init()
    {
        return base.Init();
    }
    public override Task PreRender()
    {
        UserRoleGroupListDTOs = new GridViewDataSet<UserRoleGroupListDTO>();
        UserRoleGroupListDTOs.PagingOptions.PageSize = 10;
        UserRoleGroupListDTOs.SortingOptions.SortDescending = true;
        UserRoleGroupListDTOs.SortingOptions.SortExpression = nameof(UserRoleGroupListDTO.Name);
        UserRoleGroupListDTOs.OnLoadingData = options => Task.Run(() => userRoleGroupDetailFacade.GetUserRoleGroupGridViewDataSetLoadedData(options)).Result;

        return base.PreRender();
    }

Pager确实显示,但在单击任何按钮后,什么也没有发生。

如果我将初始化添加到Init方法中,分页程序可以工作,但viewModel有另一个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-26 15:04:11

正如Tomas所写的,您创建了dataset的新实例,因此丢失了PagingOptions。

你只能在新请求中初始化数据集,而不能在回发中初始化。

代码语言:javascript
复制
public override Task Init()
{
    if (!Context.IsPostBack)
    {
        UserRoleGroupListDTOs = new GridViewDataSet<UserRoleGroupListDTO>
        {
            PagingOptions = { PageSize = 10 },
            SortingOptions =
            {
                SortDescending = true,
                SortExpression = nameof(UserRoleGroupListDTO.Name)
            },
        };
    }
    return base.Init();
}

然后,您必须在load或PreRender中设置延迟OnLoadingData

代码语言:javascript
复制
public override Task PreRender()
{
    UserRoleGroupListDTOs.OnLoadingData =
        options => Task.Run(() => userRoleGroupDetailFacade.GetUserRoleGroupGridViewDataSetLoadedData(options)).Result;
    return base.PreRender();
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-26 14:56:16

您需要在Init阶段初始化寻呼机。PreRender事件在处理来自页的命令之后发生。您基本上是在用初始数据集覆盖数据集。

请参阅ViewModels Documentation中的图表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45319149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档