Model Razor页面和DevXPress-在一个单元格中显示多个图像
我有一个cshtml页面,一个定义了列的Devextreme数据网格,包含来自模型的数据。我的模型有一些属性,但也有一个ICollection Attachments属性,它是数据库中Atachment ID的列表 在Datagrid中,我有一个CellTemplate,我想在其中为模型中的每个附件Id显示一个按钮。因此,我需要在ID上循环 代码中的XXXXXX部分需要替换为附件计数 我试图访问Model.Attchments.Count,但它不起作用。(foor循环) 我可以在文本框中设置此值,但无法将其传递给dor循环Model Razor页面和DevXPress-在一个单元格中显示多个图像,model,datagrid,devexpress,razor-pages,Model,Datagrid,Devexpress,Razor Pages,我有一个cshtml页面,一个定义了列的Devextreme数据网格,包含来自模型的数据。我的模型有一些属性,但也有一个ICollection Attachments属性,它是数据库中Atachment ID的列表 在Datagrid中,我有一个CellTemplate,我想在其中为模型中的每个附件Id显示一个按钮。因此,我需要在ID上循环 代码中的XXXXXX部分需要替换为附件计数 我试图访问Model.Attchments.Count,但它不起作用。(foor循环) 我可以在文本框中设置此值
<code>
class UFe : U, IUF
{
private List<int> _attId;
internal UFe()
{
this._attId = new List<int>();
}
public string BookingNr { get; set; }
public ICollection<int> Attachments
{
get => this._attId;
set
{
this._attId = value as List<int>;
}
}
public void AddUAttid(int attId)
{
this._attId.Add(attId);
}
}
</code>
UFe类:U、IUF
{
私人名单;
内部UFe()
{
这个。_attId=新列表();
}
公共字符串BookingNr{get;set;}
公共ICollection附件
{
get=>这个;
设置
{
这是。_attId=列表中的值;
}
}
公共无效地址(内部阁楼)
{
本._attId.Add(attId);
}
}
以下是我的datagrid的一部分:
<code>
@(Html.DevExtreme().DataGrid<IUF>()
.ID("MyGrid")
.DataSource(d => d.Array().Data(Model.UFeList).Key("BookingNr"))
.ShowBorders(true)
.ColumnAutoWidth(true)
)
.Columns(columns =>
{ columns.AddFor(m => m.BookingNr).Caption("Number").Alignment(HorizontalAlignment.Right);
.CellTemplate(@<text>
@Html.DevExtreme().TextBox().Name(<b>"tryingToPassThisValue"</b>).Value(new JS("data.Attachments.length")).Visible(true)</code>
<code>
@for (int i = 0; i < XXXXXXXX; i++)
{
<form method="get" asp-page-handler="file">
<button>
<img src="att.png">
</button>
</form>
}
</text>);
</code>
@(Html.DevExtreme().DataGrid())
.ID(“MyGrid”)
.DataSource(d=>d.Array().Data(Model.UFeList).Key(“BookingNr”))
.ShowBorders(正确)
.ColumnAutoWidth(真)
)
.列(列=>
{columns.AddFor(m=>m.BookingNr).Caption(“Number”).Alignment(HorizontalAlignment.Right);
.CellTemplate(@
@Html.DevExtreme().TextBox().Name(“tryingToPassThisValue”).Value(新JS(“data.Attachments.length”)).Visible(true)
@对于(int i=0;i
我想传递Model.Attchments.Count或data.Attachments-length对象而不是XXXXX,但无法使其工作。您可以使用ERB语法来访问值,如
.CellTemplate(@<text>
@Html.DevExtreme().TextBox().Name("tryingToPassThisValue").Value("").Visible(true)
<% for (var i = 0; i < data.Attachments.length; i++) { %>
<form method="get" asp- page- handler="file">
<button>
<img src="att.png">
</button>
</form>
<% } %>
</text>);
.CellTemplate(@
@Html.DevExtreme().TextBox().Name(“tryingToPassThisValue”).Value(“”)。可见(true)
);
我找到了一个解决方案:
使用当前数据向网格中添加列,然后对其调用JS,如下所示:
columns.Add().DataField("Attachments").Caption("YourCaption").CellTemplate(new JS("function(container, options) {cellTemplate(container, options);}"));
然后编写jourjs函数
<script>
function cellTemplate(container, options) {
//Set her your code - in my case thats the form from the previous example.
}
</script>
函数cellTemplate(容器、选项){
//给她设置你的代码——在我的例子中,这是上一个例子中的表单。
}
非常适合我。它不起作用是因为“