|
这个是主要发生在某类数据不存在,然后又要和其他数据进行关联的时候.
比如说:职称用户管理,部门用户管理,角色用户管理,角色权限管理
并且引发错误的代码都在这些页面后台程序的 BindGrid2 里面
原来的代码如下:
- int deptID = GetSelectedDataKeyID(Grid1);
- if (deptID == -1)
- {
- Grid2.RecordCount = 0;
- Grid2.DataSource = null;
- Grid2.DataBind();
- }
- else
- {
- // 查询 X_User 表
- IQueryable<User> q = DB.Users.Include(u => u.Dept);
- // 在用户名称中搜索
- string searchText = ttbSearchUser.Text.Trim();
- if (!String.IsNullOrEmpty(searchText))
- {
- q.Where(u => u.Name.Contains(searchText));
- }
- q = q.Where(u => u.Name != "admin");
- // 过滤选中部门下的所有用户
- q = q.Where(u => u.Dept.ID == deptID);
- // 在查询添加之后,排序和分页之前获取总记录数
- Grid2.RecordCount = q.Count();
- // 排列和分页
- q = SortAndPage<User>(q, Grid2);
- Grid2.DataSource = q;
- Grid2.DataBind();
- }
复制代码
修改后的代码是这样:
- //不存在部门信息的情况下, 不继续后面的操作
- if (Grid1.Rows.Count == 0)
- {
- return;
- }
- else
- {
- int deptID = GetSelectedDataKeyID(Grid1);
- if (deptID == -1)
- {
- Grid2.RecordCount = 0;
- Grid2.DataSource = null;
- Grid2.DataBind();
- }
- else
- {
- // 查询 X_User 表
- IQueryable<User> q = DB.Users.Include(u => u.Dept);
- // 在用户名称中搜索
- string searchText = ttbSearchUser.Text.Trim();
- if (!String.IsNullOrEmpty(searchText))
- {
- q.Where(u => u.Name.Contains(searchText));
- }
- q = q.Where(u => u.Name != "admin");
- // 过滤选中部门下的所有用户
- q = q.Where(u => u.Dept.ID == deptID);
- // 在查询添加之后,排序和分页之前获取总记录数
- Grid2.RecordCount = q.Count();
- // 排列和分页
- q = SortAndPage<User>(q, Grid2);
- Grid2.DataSource = q;
- Grid2.DataBind();
- }
- }
复制代码
其他几个都这样改 |
|