Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom DataGridView duplicated columns

I've created a custom Winforms control by subclassing from the DataGridView.

The custom datagrid view defines it's own columns and mappings.

However whenever I drag it off the toolbox and onto the design surface of a form, the form recreates a column control (DataGridViewTextBoxColumn) for each column in the custom control, such that I end up with double the number of columns I should have.

The whole idea is that the control is already "self aware" so I don't need the form to do anything. Clearly I've overlooked something simple but I'm more Web than Windows and nothing immediately stands out as the cause for this.

enter image description here

Custom Datagrid:

 partial class StrategyGrid
{
        private System.ComponentModel.IContainer components = null;


        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Component Designer generated code
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle22 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle23 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle24 = new System.Windows.Forms.DataGridViewCellStyle();
            this.zquantityDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.zbuyPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xbuyParcelTotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xtargetPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xtargetParcelTotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xTargetNetProfitAmt = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xTargetNetProfitPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xMarketPriceNetProfitAmt = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xMarketPriceNetProfitPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.xColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
            ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
            this.SuspendLayout();
            // 
            // zquantityDataGridViewTextBoxColumn
            // 
            this.zquantityDataGridViewTextBoxColumn.DataPropertyName = "Quantity";
            dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            this.zquantityDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle13;
            this.zquantityDataGridViewTextBoxColumn.HeaderText = "Qty";
            this.zquantityDataGridViewTextBoxColumn.MinimumWidth = 85;
            this.zquantityDataGridViewTextBoxColumn.Name = "zquantityDataGridViewTextBoxColumn";
            this.zquantityDataGridViewTextBoxColumn.Width = 85;
            // 
            // zbuyPricePerShareDataGridViewTextBoxColumn
            // 
            this.zbuyPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "BuyPricePerShare";
            dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle14.Format = "N2";
            dataGridViewCellStyle14.NullValue = null;
            this.zbuyPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle14;
            this.zbuyPricePerShareDataGridViewTextBoxColumn.HeaderText = "Buy Price";
            this.zbuyPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 85;
            this.zbuyPricePerShareDataGridViewTextBoxColumn.Name = "zbuyPricePerShareDataGridViewTextBoxColumn";
            this.zbuyPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Buy price per share";
            this.zbuyPricePerShareDataGridViewTextBoxColumn.Width = 85;
            // 
            // zbuyParcelSubtotalDataGridViewTextBoxColumn
            // 
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.DataPropertyName = "BuyParcelSubtotal";
            dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle15.Format = "C2";
            dataGridViewCellStyle15.NullValue = null;
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle15;
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.HeaderText = "Buy Sub";
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.MinimumWidth = 85;
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Name = "zbuyParcelSubtotalDataGridViewTextBoxColumn";
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Visible = false;
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Width = 85;
            // 
            // zbuyBrokerageFeeAmountDataGridViewTextBoxColumn
            // 
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.DataPropertyName = "BuyBrokerageFeeAmount";
            dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle16.Format = "C0";
            dataGridViewCellStyle16.NullValue = null;
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle16;
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.HeaderText = "Rates";
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.MinimumWidth = 75;
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Name = "zbuyBrokerageFeeAmountDataGridViewTextBoxColumn";
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.ToolTipText = "Buy Brokerage Rates";
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Visible = false;
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Width = 75;
            // 
            // xbuyParcelTotalDataGridViewTextBoxColumn
            // 
            this.xbuyParcelTotalDataGridViewTextBoxColumn.DataPropertyName = "BuyParcelTotal";
            dataGridViewCellStyle17.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle17.Format = "N0";
            dataGridViewCellStyle17.NullValue = null;
            this.xbuyParcelTotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle17;
            this.xbuyParcelTotalDataGridViewTextBoxColumn.HeaderText = "Buy Price Total";
            this.xbuyParcelTotalDataGridViewTextBoxColumn.MinimumWidth = 85;
            this.xbuyParcelTotalDataGridViewTextBoxColumn.Name = "xbuyParcelTotalDataGridViewTextBoxColumn";
            this.xbuyParcelTotalDataGridViewTextBoxColumn.ToolTipText = "Buy Total Parcel Cost";
            this.xbuyParcelTotalDataGridViewTextBoxColumn.Width = 85;
            // 
            // xbreakevenPricePerShareDataGridViewTextBoxColumn
            // 
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "BreakevenPricePerShare";
            dataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle18.Format = "N2";
            dataGridViewCellStyle18.NullValue = null;
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle18;
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.HeaderText = "B/E Price";
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 100;
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.Name = "xbreakevenPricePerShareDataGridViewTextBoxColumn";
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Breakeven price per share";
            // 
            // xtargetPricePerShareDataGridViewTextBoxColumn
            // 
            this.xtargetPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "TargetPricePerShare";
            dataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle19.Format = "N2";
            dataGridViewCellStyle19.NullValue = null;
            this.xtargetPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle19;
            this.xtargetPricePerShareDataGridViewTextBoxColumn.HeaderText = "Target Price";
            this.xtargetPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 100;
            this.xtargetPricePerShareDataGridViewTextBoxColumn.Name = "xtargetPricePerShareDataGridViewTextBoxColumn";
            this.xtargetPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Target price per share";
            // 
            // xtargetParcelTotalDataGridViewTextBoxColumn
            // 
            this.xtargetParcelTotalDataGridViewTextBoxColumn.DataPropertyName = "TargetParcelTotal";
            dataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle20.Format = "N0";
            dataGridViewCellStyle20.NullValue = null;
            this.xtargetParcelTotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle20;
            this.xtargetParcelTotalDataGridViewTextBoxColumn.HeaderText = "Target Price NV";
            this.xtargetParcelTotalDataGridViewTextBoxColumn.MinimumWidth = 100;
            this.xtargetParcelTotalDataGridViewTextBoxColumn.Name = "xtargetParcelTotalDataGridViewTextBoxColumn";
            this.xtargetParcelTotalDataGridViewTextBoxColumn.ToolTipText = "Target Price Net Value";
            // 
            // xTargetNetProfitAmt
            // 
            this.xTargetNetProfitAmt.DataPropertyName = "TargetNetProfitAmt";
            dataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle21.Format = "N2";
            dataGridViewCellStyle21.NullValue = "0";
            this.xTargetNetProfitAmt.DefaultCellStyle = dataGridViewCellStyle21;
            this.xTargetNetProfitAmt.HeaderText = "Target NP Amt";
            this.xTargetNetProfitAmt.MinimumWidth = 100;
            this.xTargetNetProfitAmt.Name = "xTargetNetProfitAmt";
            // 
            // xTargetNetProfitPct
            // 
            this.xTargetNetProfitPct.DataPropertyName = "TargetNetProfitPct";
            dataGridViewCellStyle22.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            this.xTargetNetProfitPct.DefaultCellStyle = dataGridViewCellStyle22;
            this.xTargetNetProfitPct.HeaderText = "Target NP Pct";
            this.xTargetNetProfitPct.MinimumWidth = 100;
            this.xTargetNetProfitPct.Name = "xTargetNetProfitPct";
            // 
            // xMarketPriceNetProfitAmt
            // 
            this.xMarketPriceNetProfitAmt.DataPropertyName = "MarketPriceNetProfitAmt";
            dataGridViewCellStyle23.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle23.Format = "N2";
            dataGridViewCellStyle23.NullValue = "0";
            this.xMarketPriceNetProfitAmt.DefaultCellStyle = dataGridViewCellStyle23;
            this.xMarketPriceNetProfitAmt.HeaderText = "Market Price NP Amt";
            this.xMarketPriceNetProfitAmt.MinimumWidth = 100;
            this.xMarketPriceNetProfitAmt.Name = "xMarketPriceNetProfitAmt";
            // 
            // xMarketPriceNetProfitPct
            // 
            this.xMarketPriceNetProfitPct.DataPropertyName = "MarketPriceNetProfitPct";
            dataGridViewCellStyle24.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
            dataGridViewCellStyle24.Format = "N2";
            dataGridViewCellStyle24.NullValue = null;
            this.xMarketPriceNetProfitPct.DefaultCellStyle = dataGridViewCellStyle24;
            this.xMarketPriceNetProfitPct.HeaderText = "Market Price NP Pct";
            this.xMarketPriceNetProfitPct.MinimumWidth = 100;
            this.xMarketPriceNetProfitPct.Name = "xMarketPriceNetProfitPct";
            this.xMarketPriceNetProfitPct.ReadOnly = true;
            // 
            // xColumn2
            // 
            this.xColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
            this.xColumn2.HeaderText = "";
            this.xColumn2.Name = "xColumn2";
            this.xColumn2.ReadOnly = true;
            // 
            // bindingSource1
            // 
            this.bindingSource1.DataSource = typeof(FlatShareTradePlanList);
            // 
            // StrategyGrid
            // 
            this.AutoGenerateColumns = false;
            this.BackgroundColor = System.Drawing.Color.Black;
            this.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.zquantityDataGridViewTextBoxColumn,
            this.zbuyPricePerShareDataGridViewTextBoxColumn,
            this.zbuyParcelSubtotalDataGridViewTextBoxColumn,
            this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn,
            this.xbuyParcelTotalDataGridViewTextBoxColumn,
            this.xbreakevenPricePerShareDataGridViewTextBoxColumn,
            this.xtargetPricePerShareDataGridViewTextBoxColumn,
            this.xtargetParcelTotalDataGridViewTextBoxColumn,
            this.xTargetNetProfitAmt,
            this.xTargetNetProfitPct,
            this.xMarketPriceNetProfitAmt,
            this.xMarketPriceNetProfitPct,
            this.xColumn2});
            this.Cursor = System.Windows.Forms.Cursors.Arrow;
            this.MultiSelect = false;
            this.Name = "StrategyGridView";
            this.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Sunken;
            this.RowHeadersVisible = false;
            this.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
            this.Size = new System.Drawing.Size(1193, 401);
            this.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.entryStrategyGridView_CellFormatting);
            ((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.DataGridViewTextBoxColumn zquantityDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn zbuyPricePerShareDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn zbuyParcelSubtotalDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn zbuyBrokerageFeeAmountDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn xbuyParcelTotalDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn xbreakevenPricePerShareDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn xtargetPricePerShareDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn xtargetParcelTotalDataGridViewTextBoxColumn;
        private System.Windows.Forms.DataGridViewTextBoxColumn xTargetNetProfitAmt;
        private System.Windows.Forms.DataGridViewTextBoxColumn xTargetNetProfitPct;
        private System.Windows.Forms.DataGridViewTextBoxColumn xMarketPriceNetProfitAmt;
        private System.Windows.Forms.DataGridViewTextBoxColumn xMarketPriceNetProfitPct;
        private System.Windows.Forms.DataGridViewTextBoxColumn xColumn2;
        private System.Windows.Forms.BindingSource bindingSource1;


    }

When dragging onto a form the form generates the following insides it's InitializeComponent:

  private StrategyGrid strategyGrid1;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn12;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn13;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn14;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn15;
    private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn28;

Not sure where it's reading this "requirement" of having these columns from... but it's wrong. They are already present within the custom control. I thought maybe something to do AccessModifiers but can't seem to work it out.

like image 854
rism Avatar asked Jul 17 '14 03:07

rism


2 Answers

It seems like you have not assigned Column's DataPropertyName in those columns. if you have created columns manually and assigning DataSrouce to the data grid the unmatched column will be generated automatically. Get more information and example about DataPropertyName on MSDN

like image 137
Shell Avatar answered Nov 16 '22 04:11

Shell


go to gridview properties or F4 --> Uncheck Auto Generated Coloumns ="False"

like image 2
biswapm Avatar answered Nov 16 '22 05:11

biswapm