【问题标题】:DotVVM DataPager not workingDotVVM DataPager 不工作
【发布时间】:2018-01-01 07:34:28
【问题描述】:

带有DataPager的dothtml表格:

<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}"/>

Prerender 函数中的 ViewModel 和 init:

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();
    }

寻呼机确实显示,但点击任何按钮后,什么都没有发生。

如果我在 Init 方法中添加初始化,pager 工作,但 viewModel 有另一个错误。

【问题讨论】:

    标签: dotvvm


    【解决方案1】:

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

    请参阅ViewModels Documentation 中的图表。

    【讨论】:

      【解决方案2】:

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

      您必须仅在新请求中初始化数据集,而不是在回发中。

      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 中设置 delagate OnLoadingData

      public override Task PreRender()
      {
          UserRoleGroupListDTOs.OnLoadingData =
              options => Task.Run(() => userRoleGroupDetailFacade.GetUserRoleGroupGridViewDataSetLoadedData(options)).Result;
          return base.PreRender();
      }
      

      【讨论】:

      • 执行命令绑定后,将删除实体,实体仍显示在表格中。看起来数据不会在 Prerender 中重新加载。
      • GetUserRoleGroupGridViewDataSetLoadedData 是在 PreRender 之后调用的,所以应该还有另一个错误。你的命令怎么样?
      • 在命令中你应该使用 UserRoleGroupListDTOs.RequestRefresh(true);
      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      相关资源
      最近更新 更多