Фильтр Gridview с несколькими пользователями - PullRequest
0 голосов
/ 22 марта 2012

У меня есть приложение с около 20 сетками, которые можно отфильтровать с помощью текстовых полей и некоторых выпадающих списков. Веб-сайт защищен пользовательской таблицей, в которой хранятся имя пользователя и пароли. Когда пользователь входит в систему, файл cookie создается с такой информацией, как идентификатор пользователя, идентификатор компании и идентификатор судна, если это применимо.

Если пользователь является пользователем компании, фильтр всегда использует companyid из файла cookie для фильтрации данных на основе companyid = "12" и vessel = "what". Если companyid не имеет судна, результаты не отображаются.

Ситуация идет не так, когда пользователь 1, который является администратором, или любой пользователь с более высокими привилегиями нажимает фильтр. Предложение where обновляется любым фильтром пользователя 1 для каждого вошедшего в систему пользователя. Если пользователь компании с ограниченным доступом нажимает, чтобы перейти на другую страницу, он видит результаты поиска администратора, а не видит страницу 2 своих судов или услуг. Идентификатор компании удаляется и никогда не добавляется обратно, как при входе в систему.

Уверен, проблема в следующем методе. Условие where сбрасывается каждый раз, когда кто-то нажимает кнопку фильтра, и каждый зарегистрированный пользователь получает это новое предложение where. Есть ли способ, которым я могу изменить это на зависимый от сеанса метод или параметр, или, может быть, я могу создать оператор if, который захватывает клиента или shipid и добавляет его к предложению where, как это происходит, когда пользователь впервые входит в систему для пользователей компании и судна это, однако, не устранит проблему с разделением _whereclause между сеансами и все еще вызовет проблемы, когда пользователь нажимает на следующую страницу. Вместо того, чтобы получать результаты, они ничего не получат.

Любой другой совет высоко ценится.

protected void PopulategvVesselListing (string whereclause)
{
    _dsGlobalDatasource = new TelemarVesselListings().GetVesselListingDatasource(whereclause);
    if (_dsGlobalDatasource.Tables[0].Rows.Count != 0)
    {
        gvVesselListing.DataSource = _dsGlobalDatasource;
        gvVesselListing.DataBind();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...