C# 使用MCV将结果从网格分散到多个页面
我目前有一个显示一些数据的网格视图(我更喜欢一个表,但这是我想要的)。返回数据的查询可以返回100多条记录 我希望一次只能显示10条记录,然后将其余结果放在另一个页面上,用户可以单击按钮2、3、4等 通常我会使用数据表来完成这项工作,但由于这是一个网格,我不太确定如何处理它。下面是我的代码。如果有人能给我一个想法或给我指出正确的方向,我将不胜感激 视图:C# 使用MCV将结果从网格分散到多个页面,c#,asp.net-mvc,model-view-controller,datagrid,C#,Asp.net Mvc,Model View Controller,Datagrid,我目前有一个显示一些数据的网格视图(我更喜欢一个表,但这是我想要的)。返回数据的查询可以返回100多条记录 我希望一次只能显示10条记录,然后将其余结果放在另一个页面上,用户可以单击按钮2、3、4等 通常我会使用数据表来完成这项工作,但由于这是一个网格,我不太确定如何处理它。下面是我的代码。如果有人能给我一个想法或给我指出正确的方向,我将不胜感激 视图: @使用(Html.BeginForm(“SearchGenericLogs”、“Tools”、FormMethod.Post)){ @Drop
@使用(Html.BeginForm(“SearchGenericLogs”、“Tools”、FormMethod.Post)){
@DropDownListFor(m=>m.LogLevelId,新建SelectList(Model.LogLevels,“pkLogLevelId”,“LogLevel”,Model.LogLevelId),新建{@class=“form control”,data\u toggle=“tooltip”,title=Html.DisplayNameFor(m=>m.LogLevelId)})
@Html.DropDownListFor(m=>m.LogSource,新建SelectList(Model.logsourcecode,“pkLogSourceCode”,“LogSource”,Model.LogSource),新建{@class=“form control”,data\u toggle=“tooltip”,title=Html.DisplayNameFor(m=>m.LogSource)})
@Html.TextBoxFor(m=>m.EntityId,新的{@class=“form control”,type=“number”,placeholder=Html.DisplayNameFor(m=>m.EntityId),data\u toggle=“tooltip”,title=Html.DisplayNameFor(m=>m.EntityId)})
@Html.TextBoxFor(m=>m.FromLogDate,新的{@class=“form control”,type=“DateTime”,placeholder=Html.DisplayNameFor(m=>m.FromLogDate),data\u toggle=“tooltip”,title=Html.DisplayNameFor(m=>m.FromLogDate)})
@Html.TextBoxFor(m=>m.ToLogDate,新的{@class=“form control”,type=“DateTime”,placeholder=Html.DisplayNameFor(m=>m.ToLogDate),data\u toggle=“tooltip”,title=Html.DisplayNameFor(m=>m.ToLogDate)})
提交
身份证件
来源
水平仪
实体ID
日志日期
消息
@foreach(Model.Logs中的var项)
{
@DisplayFor(modeleItem=>item.LogId)
@DisplayFor(modelItem=>item.LogSource)
@DisplayFor(modelItem=>item.LogLevel)
@DisplayFor(modelItem=>item.EntityId)
@DisplayFor(modelItem=>item.LogDateTime)
@DisplayFor(modelItem=>item.Message)
}
}
我也会发布控制器操作,除了这个应用程序比典型的模型、视图和控制器要复杂一点。如果有人需要更多信息,请告诉我。我可以更新OP.您可以创建列表的局部视图(您的
@foreach(Model.Logs中的var项)
块),然后通过单击控制器的页码发出ajax请求。然后使用linq获取数据,如下所示:.Skip((pageNumber-1)*pageSize)。取(pageSize)
,其中pageSize为10。然后,只需将该页面的部分视图和数据返回到ajax调用,并在DOM中替换该HTML。此外,看起来您的表单(HTML.BeginForm
)中有一个无效的表单(
)。你应该删除第二种形式。@z好吧,我想这是我唯一的选择,但这不是唯一的选择。你可以一盎司渲染所有数据,然后用class.page
将每10行列表组项包装在一个div中,然后将css样式写入显示:none
all.page
,然后编写一些javascript来显示与点击的页码(索引位置)对应的。page
.有一些javascript插件可以为您处理所有前端工作。您只需点击页面上的onPageClick
事件,进行ajax调用或显示/隐藏.page
@using (Html.BeginForm("SearchGenericLogs", "Tools", FormMethod.Post)){
<div class="form-inline" style="height:50px; position:relative;">
<form class="form-inline row">
<div class="col-md-11">
@Html.DropDownListFor(m => m.LogLevelId, new SelectList(Model.LogLevels, "pkLogLevelId", "LogLevel", Model.LogLevelId), new { @class = "form-control", data_toggle = "tooltip", title = Html.DisplayNameFor(m => m.LogLevelId) })
@Html.DropDownListFor(m => m.LogSource, new SelectList(Model.LogSourceCodes, "pkLogSourceCode", "LogSource", Model.LogSource), new { @class = "form-control", data_toggle = "tooltip", title = Html.DisplayNameFor(m => m.LogSource) })
@Html.TextBoxFor(m => m.EntityId, new { @class = "form-control", type = "number", placeholder = Html.DisplayNameFor(m => m.EntityId), data_toggle = "tooltip", title = Html.DisplayNameFor(m => m.EntityId) })
@Html.TextBoxFor(m => m.FromLogDate, new { @class = "form-control", type = "DateTime", placeholder = Html.DisplayNameFor(m => m.FromLogDate), data_toggle = "tooltip", title = Html.DisplayNameFor(m => m.FromLogDate) })
@Html.TextBoxFor(m => m.ToLogDate, new { @class = "form-control", type = "DateTime", placeholder = Html.DisplayNameFor(m => m.ToLogDate), data_toggle = "tooltip", title = Html.DisplayNameFor(m => m.ToLogDate) })
</div>
<div class="col-md-1 text-right">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
<div class="list-group">
<div class="row list-group-item list-group-item-heading divTableHeading">
<div class="col-md-1"> ID </div>
<div class="col-md-1"> Source </div>
<div class="col-md-1"> Level </div>
<div class="col-md-1"> Entity ID </div>
<div class="col-md-2"> Log Date </div>
<div class="col-md-6"> Message </div>
</div>
@foreach (var item in Model.Logs)
{
<div class="row list-group-item">
<div class="col-md-1">@Html.DisplayFor(modelItem => item.LogId) </div>
<div class="col-md-1">@Html.DisplayFor(modelItem => item.LogSource) </div>
<div class="col-md-1">@Html.DisplayFor(modelItem => item.LogLevel) </div>
<div class="col-md-1">@Html.DisplayFor(modelItem => item.EntityId) </div>
<div class="col-md-2">@Html.DisplayFor(modelItem => item.LogDateTime) </div>
<div class="col-md-6" style="word-break: break-word;">@Html.DisplayFor(modelItem => item.Message) </div>
</div>
}
</div>}