Andy
Рассматривали ли вы возможность подключения к событию OnDataBound gridviews и сохранения соответствующих атрибутов gridview в файле cookie? Затем вы можете нажать на этот файл cookie на событии PageLoad, отличном от PostBack, чтобы восстановить вид сетки примерно * там, где его оставил пользователь.
- Примерно потому, что вид сетки может немного отличаться в зависимости от любых операций CRUD с исходными данными, происходящими из другой активности, пока пользователь отсутствовал.
Вы можете использовать свойство истечения срока действия cookie, если хотите, чтобы страница долгое время запоминала свое состояние.
в любом случае ... Вот пример кода.
protected void gvCountryList_DataBound(object sender, EventArgs e)
{
// Store gvCountryList Gridview Sort, PageIndex, and PageSize info
// in a cookie so that we can redisplay same grid position next
// time they visit page.
HttpCookie aCookie = new HttpCookie("MaintainCountries");
aCookie["SortExp"] = gvCountryList.SortExpression.ToString();
aCookie["SortDir"] = gvCountryList.SortDirection.ToString();
aCookie["PageIndex"] = gvCountryList.PageIndex.ToString();
Response.Cookies.Add("aCookie");
)
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
//Grab the cookies
if (Request.Cookies["MaintainCountries"] != null)
{
if ((Request.Cookies["MaintainCountries"]["SortExp"] != null)
&& (Request.Cookies["MaintainCountries"]["SortDir"] != null)
&& (Request.Cookies["MaintainCountries"]["PageIndex"] != null))
{
SortDirection srtDir = SortDirection.Ascending;
if (Request.Cookies["MaintainCountries"]["SortDir"].ToUpper() == "DESCENDING")
srtDir = SortDirection.Descending;
gvCountryList.Sort(Request.Cookies["MaintainCountries"]["SortExp"].ToString(), srtDir);
gvCountryList.PageIndex = Convert.ToInt32(Request.Cookies["MaintainCountries"]["PageIndex"].ToString());
}
}
}
}
Может быть, есть лучший способ, чем печенье.
Я приветствую и критику, и отзывы сообщества. Я считаю себя новичком .net, поэтому, если кто-то видит потенциальные проблемы или опасность, пожалуйста, высказывайте свои мысли.
Mike