/// <summary> /// Exibe o formulário de pesquisa com os registros /// </summary> ///<param name="values">Coleção do tipo IDisplayValues</param> public static SearchWindowResult Show(IDisplayValues values, string filter = "") { SearchWindowForm form = new SearchWindowForm(); values.ApplyFilters(filter.IsNullOrEmpty() ? null : form.Predicate(filter)); form.MainGrid.Populate(values); form.TopMost = true; form.ShowDialog(); SearchWindowResult result = form.Result; form.Close(); form.Dispose(); return result; }
/// <summary> /// Move o registro para a página solicitada. /// <para>Por ser uma definição dinâmica, não temos como saber quem é a última página.</para> /// </summary> /// <returns>true se realmente moveu para a página</returns> /// <exception cref="DynamicPaging">Exceção lançada quando o DynamicPaging não está definido</exception> public bool MoveToPage(int page) { bool result = false; if (IsDynamicPaging) { //se ficar como zero o offset, algo pode dar errado, então ajustamos para ter sempre o pagesize padrão if (Where.Limit.From <= PageSize) { Where.Limit = new Limit(PageSize, 0); } Where.Limit = new Limit(Where.Limit.From * ((page - 1) + 1), Where.Limit.OffSet); values.Clear(); IDisplayValues displayValues = DynamicPaging.Invoke(Where); if (displayValues != null) { DataReader = displayValues.DataReader; values = displayValues.Values; if (page > 1 && values.Count == 0) { MoveToPage(--page); return(false); } } result = (values != null && values.Count > 0); } else { throw new DynamicPaging(); } return(result); }
/// <summary> /// Preenche os dados da grid /// </summary> /// <param name="values">valores que deverão ser populados</param> /// <param name="refreshing">Se true, recria a grid.</param> public void Populate(IDisplayValues values, bool refreshing) { if(values == null) return; _dataSource = values; if(_dataSource.CreateColumns) PrepareColumns(_dataSource.Columns); Populate(values.Values); }
/// <summary> /// Preenche os dados da grid /// </summary> /// <param name="values">valores que deverão ser populados</param> public virtual void Populate(IDisplayValues values) { Populate(values, false); }
public GridPanel() { InitializeComponent(); _dataSource = new DisplayValues(null); grid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; grid.Dock = System.Windows.Forms.DockStyle.None; grid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; grid.ShowCellErrors = false; grid.ShowRowErrors = false; grid.AllowUserToOrderColumns = false; this.ScrollBars = ScrollBars.Both; #region Eventos da Grid grid.CellMouseDoubleClick += new DataGridViewCellMouseEventHandler((sender, e) => { if(e.RowIndex >= 0 && CellMouseDoubleClick != null) { CellMouseDoubleClick(sender, e); } else toolbarGridPanel.EditButton.PerformClick(); }); grid.SelectionChanged += new EventHandler((sender, e) => { if(clearing) return; if(SelectionChanged != null) SelectionChanged(sender, e); }); grid.CellClick += new DataGridViewCellEventHandler((sender, e) => { if(CellClick != null) CellClick(sender, e); }); grid.RowEnter += new DataGridViewCellEventHandler((sender, e) => { if(RowEnter != null) RowEnter(sender, e); }); grid.CellDoubleClick += new DataGridViewCellEventHandler((sender, e) => { if(e.RowIndex >= 0 && CellDoubleClick != null) { CellDoubleClick(sender, e); } }); grid.CellEndEdit += new DataGridViewCellEventHandler((sender, e) => { if(clearing) return; if(CellEndEdit != null) CellEndEdit(sender, e); }); grid.CellValueChanged += new DataGridViewCellEventHandler((sender, e) => { if(clearing) return; if(CellValueChanged != null) CellValueChanged(sender, e); }); grid.CellBeginEdit += new DataGridViewCellCancelEventHandler((sender, e) => { if(clearing) return; if(CellBeginEdit != null) CellBeginEdit(sender, e); }); grid.RowsAdded += new DataGridViewRowsAddedEventHandler((sender, e) => { if(clearing) return; #region Bug Fix #17050 if(!grid.Rows[e.RowIndex].IsNewRow && !fromPopulate) { object[] value = new object[grid.ColumnCount]; for(int i = 0; i < grid.ColumnCount; i++) { value[i] = grid.Rows[e.RowIndex].Cells[i].Value; } _dataSource.Values.Add(value); pagingToolbar.RecordCount = RowsCount; } #endregion if(RowsAdded != null) RowsAdded(sender, e); }); grid.RowsRemoved += new DataGridViewRowsRemovedEventHandler((sender, e) => { if(clearing) return; if(RowsRemoved != null && e.RowIndex >= 0) RowsRemoved(sender, e); pagingToolbar.RecordCount = RowsCount; }); grid.DataError += new DataGridViewDataErrorEventHandler((sender, e) => { if(DataError != null) DataError(sender, e); }); grid.KeyDown += (s, e) => { if(e.KeyCode == Keys.Delete) { e.Handled = true; DeleteRow(); } }; #endregion }
public void Inicializar(IDisplayValues values) { sfFiltro.DataSource = DisplayValues = values; grdFiltroRegra.PrepareColumns(values.Columns); grdFiltroRegra.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; grdFiltroRegra.Refresh(); }