我有一个大约20个网格视图的应用程序,可以使用文本框和一些下拉列表进行过滤。该网站由存储用户名和密码的用户表保护。当用户登录时,使用userid,companyid和vesselid等信息创建cookie(如果适用)。
如果用户是公司用户,则过滤器始终使用cookie中的companyid来过滤基于companyid =“12”和vessel =“whatever”的数据。如果companyid没有任何船只,则不会显示任何结果。
当管理员用户1或具有更高权限的任何用户点击过滤器时出现问题。对于每个登录用户,使用任何用户1过滤器更新whereclause。如果具有受限访问权限的公司用户点击进入另一个页面,他们会看到管理员搜索的结果,而不是查看其船只或服务的第2页。该公司被剥夺了,并且从未像他们登录时那样被添加回来。
我确定问题出在下面的方法中。每当有人点击过滤器按钮时,都会重置whereclause,并且每个登录的用户都会获得新的使用权。有没有办法可以将其更改为与会话相关的方法或参数,或者我可以构建一个if语句来抓取客户端或容器并将其附加到whereclause,就像用户首次登录公司和船只用户时一样但是,这不会解决跨会话共享_whereclause的问题,并且在用户单击下一页时仍会出现问题。他们没有得到任何结果,而是得不到任何结果。
非常感谢任何其他建议。
protected void PopulategvVesselListing (string whereclause)
{
_dsGlobalDatasource = new TelemarVesselListings().GetVesselListingDatasource(whereclause);
if (_dsGlobalDatasource.Tables[0].Rows.Count != 0)
{
gvVesselListing.DataSource = _dsGlobalDatasource;
gvVesselListing.DataBind();
}