Example #1
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Перестраивает панель детализации.
		/// </summary>
		private void RebuildDetail()
		{
			try
			{
				foreach(DataGridViewColumn col in fdgv.Columns)
					if(col.Visible == false)
					{
						if(panelDetail.Controls.IndexOfKey(col.Name) != -1)
							continue;
						DetailColumnViewControl c = new DetailColumnViewControl();
						c.Name = col.Name;
						c.Caption = col.HeaderText;
						panelDetail.Controls.Add(c);
						c.Dock = DockStyle.Top;
						c.BringToFront();
					}
					else
					{
						if(panelDetail.Controls.IndexOfKey(col.Name) != -1)
							panelDetail.Controls.RemoveByKey(col.Name);
					}
				List<Control> toDel = new List<Control>();
				foreach(Control c in panelDetail.Controls)
					if(fdgv.Columns.Contains(c.Name) == false)
					toDel.Add(c);
				foreach(Control c in toDel)
					panelDetail.Controls.Remove(c); 
			}
			catch(Exception Err)
			{
				ErrorBox.Show(Err);
			}
		}
Example #2
0
		//-------------------------------------------------------------------------------------
		#region << Controls Handlers >>
		void fdgv_ColumnStateChanged(object sender, DataGridViewColumnStateChangedEventArgs e)
		{
			try
			{
				if(isInit)
					return;
				if(e.StateChanged == DataGridViewElementStates.Visible)
					if(e.Column.Visible == false)
					{
						DetailColumnViewControl c = new DetailColumnViewControl();
						c.Name = e.Column.Name;
						c.Caption = e.Column.HeaderText;
						c.ButtonHidePressed += new EventHandler(detailColumnViewControl_ButtonHidePressed);
						panelDetail.Controls.Add(c);
						c.Dock = DockStyle.Top;
						c.BringToFront();
						if(fdgv.CurrentRow != null)
							if(e.Column.ValueType == typeof(bool))
								c.Text = ((bool)fdgv.CurrentRow.Cells[e.Column.Index].Value ? "Да" : "Нет");
							else if(typeof(Image).IsAssignableFrom(e.Column.ValueType))
								c.Text = fdgv.CurrentRow.Cells[e.Column.Index].Value.ToString();
							else
								c.Text = fdgv.CurrentRow.Cells[e.Column.Index].FormattedValue.ToString();
					}
					else if(panelDetail.Controls.ContainsKey(e.Column.Name))
						panelDetail.Controls.RemoveByKey(e.Column.Name);
			}
			catch(Exception Err)
			{
				ErrorBox.Show(Err);
			}
		}