2013-12-02 4 views
0

Я хочу механизм пользовательского состояния страницы для серии страниц, на которых есть элемент управления UniGrid Kentico (v7.0.4990.22818). Состояние по умолчанию для UniGrid не работает, потому что мы создаем запрос привязки данных сетки на основе состояния переключателей, поэтому необходим индивидуальный подход.Как программно установить текущую страницу kentico unigrid?

Я хочу иметь возможность программно выбирать текущую страницу из кода позади. Я попытался изучить свойства UniGrid, чтобы выяснить, как это сделать, но установка свойства UniPage.CurrentPage не работает. Таким образом, первый шаг был отключить состояние по умолчанию для сетки т.е.

protected void Page_Init(object sender, EventArgs e) 
{ 
    Grid.RememberState = false; 
} 

Тогда в случае page_load попытки установить текущую страницу свойство UniGrid

protected void Page_Load(object sender, EventArgs e) 
{ 
    Grid.Pager.UniPager.CurrentPage = ListStateManager.CurrentPage; 
} 

Но когда нагрузки управления UniGrid, значение set потерян, и сетка только когда-либо загружает первую страницу.

Есть ли подход, который позволил бы мне установить текущую страницу для сетки?

Update

Первый доступ к пейджеру свойству unigrid.ascx имеет ожидаемое значение CurrentPage и имеет стек вызовов, как это:!

App_Web_jce5qutr.dll CMSAdminControls_UI_UniGrid_UniGrid.Pager.get () Строка 118 C# App_Web_jce5qutr.dll! CMSAdminControls_UI_UniGrid_UniGrid.SetPager() Строка 2431 + 0x17 байт C# App_Web_jce5qutr.dll! CMSAdminControls_UI_UniGrid_UniGrid.UniGridView_DataBound (объект отправителя, System.EventArgs е) линия 891 + 0xa байт C# [External Code] App_Web_25xa3r10.dll! CMSModules_ManageTerritories_Default.BindGrid() Строка 147 + 0x31 байт C# App_Web_25xa3r10.dll! CMSModules_ManageTerritories_Default.Page_Load (объект отправителя, System.EventArgs е) Линия 58 + 0xD байт C# [Внешний код] App_Code.dll! SCCommon.StatefulListPage.OnLoad (System.EventArgs е) линия 64 + 0xf байт C# [Внешний код]

Тогда свойство пейджера вызывается несколько раз (около 15 раз), а свойство CurrentPage имеет было сброшено на значение 1 с помощью такого набора вызовов:

App_Web_jce5qutr.dll! CMSAdminControls_UI_UniGrid_UniGrid.Pager.get) Линия 118 C# App_Web_jce5qutr.dll! CMSAdminControls_UI_UniGrid_UniGrid.SetPager() Line (2431 + 0x17 байт C# App_Web_jce5qutr.dll! CMSAdminControls_UI_UniGrid_UniGrid.Page_Load (объект отправителя, System.EventArgs е) Строка 256 + 0xD байт C# [Внешний код]

ответ

0

Если установить

<cms:UniGrid ID="gridElem" runat="server" RememberState="False" ...> 

в разметке и, например,

gridElem.Pager.UniPager.CurrentPage = 2; 

в Page_Load в коде позади, он отлично работает для меня.

Попробуйте отладить свойство пейджера UniGrid.ascx.cs, чтобы увидеть, когда к нему обращаются. А также установите точку останова на строке, где вы устанавливаете свойство CurrentPage, чтобы увидеть, что происходит первым.

+0

Два вызова, сделанные для свойства Pager, получают accessor, первый раз возникает, когда я вызываю Grid.DataBind() и значение CurrentPage правильно. Затем второй вызов происходит из «Внешнего кода» -> Page_Load, и при этом доступ значение CurrentPage сбрасывается в 1 :(- аксессор get получает многократно (примерно 15 раз) из «внешнего кода», –

Смежные вопросы