根据表列值使用Devexpress Cardview时如何显示或隐藏元素以及如何

问题描述

我正在使用Devexpress的CardView,并且正在这样绑定数据库:

    var cardView = Html.DevExpress().CardView(settings =>
    {
      settings.Name = "MyCardView";
    }

    @cardView.BindToEF(string.Empty,string.Empty,(s,e) =>
    {
      e.QueryableSource = Helper.CustomerData();
    }).GetHtml()

现在,我可以通过执行以下操作在卡片顶部添加链接:

    var cardView = Html.DevExpress().CardView(settings =>
    {
      settings.Name = "MyCardView";
      settings.CardLayoutProperties.Items.AddGroupItem(g =>
      {
          g.ColSpan = 1;
          g.ShowCaption = DefaultBoolean.False;
          g.GroupBoxDecoration = GroupBoxDecoration.None;

          var cmdLayoutItem = new CardViewCommandLayoutItem();
          cmdLayoutItem.HorizontalAlign = FormLayoutHorizontalAlign.Right;

          var publicUrlButton = new CardViewCustomCommandButton();
          publicUrlButton.ID = "Link123";
          publicUrlButton.Text = "My Funny Url";

          cmdLayoutItem.CustomButtons.Add(publicUrlButton);
          g.Items.Add(cmdLayoutItem);
        });

        settings.Columns.Add(c =>
        {
            c.FieldName = "Id";
            c.Caption = "Id";
            c.ReadOnly = true;
            c.Visible = false;
        });

        settings.Columns.Add(c =>
        {
            c.FieldName = "IsOpen";
            c.Caption = "IsOpen";
            c.ReadOnly = true;
            c.Visible = false;
        });
    }

    @cardView.BindToEF(string.Empty,e) =>
    {
      e.QueryableSource = Helper.CustomerData();
    }).GetHtml()

Helper.CustomerData()返回一个IQueryable<CustomerData>。现在想象一下我的表CustomerData有一个名为IsOpen的列。仅当publicUrlButton的值为true时才显示IsOpen

解决方法

经过数小时的挖掘终于找到了解决方案。 基本上,您可以使用以下事件来控制行为:

        settings.CustomButtonInitialize = (s,e) =>
        {
            var cv = s as MVCxCardView;
            if (cv == null)
            {
                return;
            }

            var isOpen = cv.GetCardValues(e.VisibleIndex,"IsOpen");
            if (!isOpen)
            {
                if (e.ButtonID == "Link123")
                {
                    e.Visible = DefaultBoolean.False;
                }
            }
        };

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...