如何解决根据表列值使用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;
}
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。