第一列包含一个复选框,允许用户通过点击进行选择。复选框的值基于数据字段“UserInfoId”,并且名称属性为“UserInfoId”。
第二列显示添加时间。如果时间数据为空,则不显示任何内容。否则,以友好的日期格式(年/月/日)展示添加时间。
第三列显示修改时间。如果时间数据为空,则显示一个斜杠"/"。否则,以同样的友好日期格式展示修改时间。
第四列表示是否禁用。如果数据为真(表示已禁用),则显示“是”;否则,显示“否”。
第五列可能与用户的其他信息相关。具体展示内容可能因数据和业务需求而异。
前端代码:
function buildTable() {
return table;
}
// 编辑和删除按钮的生成函数
function generateEditDeleteButtons(data) {
return `
&xe6df;编辑 +
&xe6e2;删除
`;
}
// 后端代码(Controller部分)
public ActionResult Search(DataTable dt, string nickname) {
int total; // 总记录数
int pageSize = dt.length; // 每页显示的记录数
int pageIndex = dt.pageIndex; // 当前页码
IQueryable userInfoIq = CurrentBllSession.UserInfoBll.GetIQueryableBySearchPage(pageIndex, pageSize, out total, nickname); // 根据条件查询用户信息,并获取总记录数
List userInfoList = userInfoIq.ToList(); // 将查询结果转换为列表形式
dt.recordsTotal = total; // 设置总记录数到DataTable对象
dt.recordsFiltered = total; // 设置过滤后的总记录数到DataTable对象,这里假设过滤条件没有改变,所以过滤后的记录数和总记录数相同
dt.data = userInfoList; // 设置分页数据到DataTable对象
return Json(dt); // 返回处理后的DataTable对象给前端
}
后端代码(Bll服务部分):
```csharp
public IQueryable GetIQueryableBySearchPage(int pageIndex, int pageSize, out int total, string nickname) {
IQueryable userInfoIq = CurrentDal.GetIQueryable(); // 获取所有用户信息作为起始查询集
if (!string.IsNullOrEmpty(nickname)) {
// 如果提供了昵称,则根据昵称进行筛选
userInfoIq = userInfoIq.Where(a => a.Nickname.Contains(nickname));
}
total = userInfoIq.Count(); // 获取筛选后的总记录数
userInfoIq = userInfoIq.OrderByDescending(a => a.AddTime); // 按照添加时间降序排序
// 分页操作需要先排序再跳过记录,避免Entity Framework报错
userInfoIq = userInfoIq.Skip((pageIndex - 1) pageSize).Take(pageSize);
return userInfoIq; // 返回分页查询结果集
}
前台交互之DataTable的魔力
在ajax的data配置中,我们定义了一个函数来处理额外的数据发送。由于我们使用了搜索功能,每次请求数据时都需要将搜索条件作为附加数据发送给服务器。这个函数会计算当前的页码并获取搜索昵称的值,然后将其添加到请求数据中。
后台的响应与数据准备
后台的任务是提供数据源。这里我们使用了一个自定义的DataTable类来格式化数据进行交互。虽然DataTable类不是必须的,但为了满足前后数据交互的格式要求,我们选择了封装成类以便更好地管理数据。
为了与DT顺畅交互,建议返回的数据格式包含以下内容(用匿名类表示以区分大小写):
```csharp
new {
draw=, // 可以是任意标识符表示当前请求的唯一标识
recordsTotal=, // 总记录数
recordsFiltered= // 符合过滤条件的记录数(如果有过滤条件的话)
data= // 展示的数据列表
}
```
除了上述基本项外,可以根据实际需求添加其他字段。准备好数据后,将其进行Json序列化并返回给前端即可。
效果预览
以上内容即为本文的全部内容。如果您有任何疑问或建议,欢迎留言交流。让我们共同学习进步!感谢您的阅读和支持! 狼蚁SEO团队出品。 ❤️