Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC WebGrid动态内容_C#_Asp.net Mvc_Dynamic_Asp.net Mvc 4_Webgrid - Fatal编程技术网

C# MVC WebGrid动态内容

C# MVC WebGrid动态内容,c#,asp.net-mvc,dynamic,asp.net-mvc-4,webgrid,C#,Asp.net Mvc,Dynamic,Asp.net Mvc 4,Webgrid,我想要达到的目标很难解释,所以如果我能提供更多信息,请告诉我。我有一种感觉,我试图超越他们的能力来使用WebGrids,所以如果有人有任何开源的替代方案来做我正在尝试的事情,那也会很有帮助 我需要从头开始构建WebGrid,因为返回到它的内容(列和值)会根据表单上的其他条件而变化。我在一个表中的几行简单代码中就可以实现这一点,但我想使用WebGrid进行样式设置、排序和分页 @model DocumentSearchViewModel @if ((this.Model != null) &am

我想要达到的目标很难解释,所以如果我能提供更多信息,请告诉我。我有一种感觉,我试图超越他们的能力来使用WebGrids,所以如果有人有任何开源的替代方案来做我正在尝试的事情,那也会很有帮助

我需要从头开始构建WebGrid,因为返回到它的内容(列和值)会根据表单上的其他条件而变化。我在一个表中的几行简单代码中就可以实现这一点,但我想使用WebGrid进行样式设置、排序和分页

@model DocumentSearchViewModel

@if ((this.Model != null) && (this.Model.SearchResults != null) &&     (this.Model.SearchResults.Count() > 0))
{ 
    <table>
        <thead>
            <tr>
                <th>Document</th>
                @foreach (var metadata in this.Model.SearchResults.Metadata)
                {
                    <th>
                        @metadata.InstanceFieldName
                    </th>
                }
            </tr>
        </thead>
        <tbody>
            @foreach (var document in this.Model.SearchResults)
            {
                <tr>
                <td>
                    @Html.ActionLink(document.Id.ToString(), "Details", new { id = document.Id })
                </td>
                    @foreach (var metadata in document.Metadata)
                    {
                        <td>
                            @metadata.Value
                        </td>
                    }
                </tr>
            }
        </tbody>
    </table>
}
@model DocumentSearchViewModel
@if((this.Model!=null)&&(this.Model.SearchResults!=null)&&(this.Model.SearchResults.Count()>0))
{ 
文件
@foreach(this.Model.SearchResults.metadata中的var元数据)
{
@metadata.InstanceFieldName
}
@foreach(此.Model.SearchResults中的var文档)
{
@ActionLink(document.Id.ToString(),“Details”,新的{Id=document.Id})
@foreach(document.metadata中的var元数据)
{
@元数据.值
}
}
}
因此,为了解释模型结构,SearchResults有一个
IEnumerable
,这个元数据模型有InstanceFieldName和Value属性。执行搜索时,每个结果都将始终具有相同数量的元数据、相同的InstanceFieldNames,但值不同,但是快速更改表单上的字段和新搜索可能会返回一组新结果(同样,每个结果都具有相同的元数据集,但与第一组结果不同)

网格的列对应于元数据InstanceFieldName,内容对应于值

因此,我尽了最大努力使用WebGrid,但我能得到的最好结果是一个具有正确列标题和正确行数的网格,列具有正确的数据,但每一行都是相同的(从最后一行复制)

@{
var grid=new WebGrid(canPage:true,canSort:true,rowsPerPage:Model.PageSize,sortFieldName:Model.Sort,sortDirectionFieldName:Model.SortDir);
Bind(Model.SearchResults,rowCount:Model.DocumentCount);
List cols=新列表();
foreach(Model.SearchResults.Select(r=>r.metadata.FirstOrDefault()中的变量元数据)
{
var col=新的WebGridColumn();
col.ColumnName=metadata.InstanceFieldName;
col.Header=metadata.InstanceFieldHeader;
col.Style=“gridRow”;
col.CanSort=true;
cols.Add(col);
}
foreach(Model.SearchResults中的var结果)
{        
foreach(以cols为单位的变量col)
{
var metadataValue=result.Metadata.Single(m=>m.InstanceFieldName==col.ColumnName).Value;
col.Format=(item)=>@Html.Raw(“+metadataValue+”);
}
}
}
@if((this.Model!=null)&&(this.Model.SearchResults!=null)&&(this.Model.SearchResults.Count()>0))
{   
@GetHtml(htmlAttributes:new{id=“documentGrid”},rowStyle:“gridRow”,alternatingRowStyle:“gridRowAlt”,columns:cols)
}
我试图解决的是如何以及如果可能的话,首先生成列,然后将行填充到这些列中


非常感谢您的帮助,谢谢,Mark

如果您输入的行具有相同的值,您应该更改格式:

col.Format = (item) => @Html.Raw(item.metadataValue);
col.Format = (item) => @Html.Raw(item.metadataValue);