private void TxtNroPagina_BeforeNewSelection(object sender, GoToPageEventArgs e) { if (e.pageNr == 0 || e.pageNr > TotalPaginasCount || e.pageNr == CurrentPageNr) { e.success = false; return; } long click = 0; click = DateTime.Now.Ticks; bool successfulClearSelection = true; // esta operação tem como objectibo permitir que haja a possibilidade de cancelar a mudança de página if (Listview.SelectedItems.Count > 0) { successfulClearSelection = Listview.clearItemSelection(Listview.SelectedItems[0]); } if (! successfulClearSelection) { return; } CurrentPageNr = e.pageNr; // repopulate the listView Listview.Items.Clear(); LoadListData(); //If Listview.Items.Count > 0 Then // Listview.selectItem(Listview.Items(0)) //End If if (Listview.Items.Count == 1) { Listview.selectItem(Listview.Items[0]); } else if (Listview.Items.Count > 0) { Listview.selectItem(null); } //update buttons state and label text //refreshNavigationState() Debug.WriteLine("<<Go to page>> total " + new TimeSpan(DateTime.Now.Ticks - click).ToString()); }
//Private Sub Listview_SelectedIndexChanging(ByVal sender As Object, _ // ByVal e As ItemChangingEventArgs) _ // 'Handles mListview.SelectedIndexChanged // RaiseEvent ListSelectionChanged(sender, e) //End Sub private void btnAnterior_Click(object Sender, EventArgs e) { long click = 0; click = DateTime.Now.Ticks; bool successfulClearSelection = true; // esta operação tem como objectibo permitir que haja a possibilidade de cancelar a mudança de página if (Listview.SelectedItems.Count > 0) { successfulClearSelection = Listview.clearItemSelection(Listview.SelectedItems[0]); } if (! successfulClearSelection) { return; } CurrentPageNr -= 1; // repopulate the listView Listview.Items.Clear(); LoadListData(); //If Listview.Items.Count > 0 Then // Listview.selectItem(Listview.Items(0)) //End If if (Listview.Items.Count == 1) { Listview.selectItem(Listview.Items[0]); } else if (Listview.Items.Count > 0) { Listview.selectItem(null); } //update buttons state and label text //refreshNavigationState() Debug.WriteLine("<<Button Previous>> total " + new TimeSpan(DateTime.Now.Ticks - click).ToString()); }
//INSTANT C# NOTE: C# does not support optional parameters. Overloaded method(s) are created above. //ORIGINAL LINE: Public Sub LoadListData(Optional ByVal selectedItemTag As Object = null, Optional ByVal selectFirstItem As Boolean = true) public void LoadListData(object selectedItemTag, bool selectFirstItem) { long loadListDataTime = DateTime.Now.Ticks; Cursor oldCursor = null; try { oldCursor = Listview.Cursor; Listview.Parent.TopLevelControl.Cursor = Cursors.WaitCursor; try { GisaDataSetHelper.ManageDatasetConstraints(false); Listview.BeginUpdate(); PaginatedLVGetItems returnedRows = null; bool deadlockOccurred = true; while (deadlockOccurred) { GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { long calculate = DateTime.Now.Ticks; if (CalculateOrderedItems != null) CalculateOrderedItems(ho.Connection); Debug.WriteLine("<<CalculateOrderedItems>> total " + new TimeSpan(DateTime.Now.Ticks - calculate).ToString()); // selectedItemTag virá preenchido se se pretender seleccionar // um item específico após a população do lista if (selectedItemTag != null) { int pageNr = 0; // no caso deste evento não ser tratado por ninguém // consideramos simplesmente que não é suportada a // selecção de um item específico if (GetPageForItemTag != null) GetPageForItemTag(selectedItemTag, ref pageNr, ho.Connection); CurrentPageNr = pageNr; } long count = DateTime.Now.Ticks; TotalPaginasCount = countPages(ho.Connection, ItemsCountLimit); //RemainingItemsCount = countItems(ho.Connection, LastBottomID) - ItemsCountLimit Debug.WriteLine("<<countItems>> total " + new TimeSpan(DateTime.Now.Ticks - count).ToString()); long obterElementos = 0; obterElementos = DateTime.Now.Ticks; if (GetItems != null) GetItems(CurrentPageNr, ItemsCountLimit, ref returnedRows, ho.Connection); Debug.WriteLine("<<obterElementos>> total " + new TimeSpan(DateTime.Now.Ticks - obterElementos).ToString()); //limpar long delete = DateTime.Now.Ticks; if (DeleteTemporaryResults != null) DeleteTemporaryResults(ho.Connection); Debug.WriteLine("<<DeleteTemporaryResults>> total " + new TimeSpan(DateTime.Now.Ticks - delete).ToString()); deadlockOccurred = false; } catch (Exception ex) { Trace.WriteLine(ex); if (DBAbstractDataLayer.DataAccessRules.ExceptionHelper.isDeadlockException(ex)) { returnedRows = null; deadlockOccurred = true; } else throw; } finally { ho.Dispose(); } } long adicionarElementosLista = DateTime.Now.Ticks; if (AddItemsToList != null) AddItemsToList(returnedRows); Debug.WriteLine("<<adicionarElementosLista>> total " + new TimeSpan(DateTime.Now.Ticks - adicionarElementosLista).ToString()); } catch (Exception ex) { Trace.WriteLine(ex); throw; } finally { Listview.EndUpdate(); try { GisaDataSetHelper.ManageDatasetConstraints(true); } catch (ConstraintException ex) { IDbConnection conn = GisaDataSetHelper.GetTempConnection(); conn.Open(); Trace.WriteLine("<EnforceContraints>"); Trace.WriteLine(ex.ToString()); GisaDataSetHelper.FixDataSet(GisaDataSetHelper.GetInstance(), conn); conn.Close(); #if DEBUG throw; #endif } catch (Exception ex) { Trace.WriteLine(ex); throw; } } } finally { Listview.Parent.TopLevelControl.Cursor = oldCursor; } refreshNavigationState(); if (Listview.Items.Count == 1) { if (selectedItemTag != null) { // Se, por alguma razão, acontecer o item procurado não // chegar a ser encontrado também não será seleccionado // nenhum item Listview.selectItem(GUIHelper.GUIHelper.findListViewItemByTag(selectedItemTag, Listview)); } else if (selectFirstItem) { //Listview.Focus() Listview.selectItem(Listview.Items[0]); } } else if (Listview.Items.Count > 0) { Listview.selectItem(null); } Debug.WriteLine("<<LoadListData>> total " + new TimeSpan(DateTime.Now.Ticks - loadListDataTime).ToString()); }