#c# #devexpress #devexpress-mvc #devexpress-gridcontrol
#c# #devexpress #devexpress-mvc #devexpress-gridcontrol
Вопрос:
Я использую 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, string.Empty, (s, e) =>
{
e.QueryableSource = Helper.CustomerData();
}).GetHtml()
Helper.CustomerData()
Возвращает an IQueryable<CustomerData>
. Теперь представьте, что в моей таблице CustomerData
есть столбец с именем IsOpen
. Как я могу показать publicUrlButton
только тогда, когда значение IsOpen
равно true?
Ответ №1:
Наконец-то нашел решение после нескольких часов копания. В принципе, вы можете использовать следующее событие для управления поведением:
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;
}
}
};