Link to home
Start Free TrialLog in
Avatar of rwheeler23
rwheeler23Flag for United States of America

asked on

What is the alternative for commandbuilder using c#?

The more I read about commandbuilder the less I think I should be using it. I am using commandbuilder here to populate a datagridview. How would I restructure this code to not use commandbuilder to populate the datagridview?

        private void DisplayEditCHFLET()
        {
            try
            {
                EditCHFLETDataSet = new System.Data.DataSet(); /* Define the data set for the list of personnel */
                EditCHFLETDataSet.CaseSensitive = false;

                EditCHFLETDataCommand = new System.Data.SqlClient.SqlCommand();
                EditCHFLETDataCommand.Connection = EditCHFLETDataConnection;

                EditCHFLETDataCommand.CommandText = "SELECT [GRUPFLAG],[RANKNMBR],[FULLNAME],[ASGNMENT],[APPTDATE],[SHIFT],[SHLDNMBR],[RANK],[RANKDATE],[PINNUMBR],[ROW_ID] " +
                    "FROM [PERSASGN] WHERE [GRUPFLAG] = 'CHFLET' ORDER BY[FULLNAME]";

                EditCHFLETDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
                EditCHFLETDataAdapter.SelectCommand = EditCHFLETDataCommand;
                _commandBuilder = new System.Data.SqlClient.SqlCommandBuilder(EditCHFLETDataAdapter);

                EditCHFLETDataAdapter.Fill(EditCHFLETDataSet);

                if (EditCHFLETDataSet == null || (EditCHFLETDataSet.Tables.Count == 0) || (EditCHFLETDataSet.Tables[0].Rows.Count == 0))
                {
                    MessageBox.Show("No records found in personnel database. Please start entering personnel information.");
                }

                dgvEditCHFLET.DataError += new DataGridViewDataErrorEventHandler(dgvEditCHFLET_DataError);

                /* Set display properties of the data grid view */
                dgvEditCHFLET.RowHeadersVisible = false;
                dgvEditCHFLET.DataSource = EditCHFLETDataSet.Tables[0].DefaultView;
                dgvEditCHFLET.AutoGenerateColumns = true;
                dgvEditCHFLET.DefaultCellStyle.NullValue = ' ';
                dgvEditCHFLET.AllowUserToAddRows = false;

                /* Setup the display properties of the columns within the data grid view */
                dgvEditCHFLET.Columns[0].Width = 100;
                dgvEditCHFLET.Columns[0].ReadOnly = false;
                dgvEditCHFLET.Columns[0].HeaderText = "Group Flag";
                dgvEditCHFLET.Columns[0].Visible = false;

                dgvEditCHFLET.Columns[1].Width = 60;
                dgvEditCHFLET.Columns[1].ReadOnly = false;
                dgvEditCHFLET.Columns[1].HeaderText = "Rank Number";

                dgvEditCHFLET.Columns[2].Width = 200;
                dgvEditCHFLET.Columns[2].ReadOnly = false;
                dgvEditCHFLET.Columns[2].HeaderText = "Full Name";

                dgvEditCHFLET.Columns[3].Width = 70;
                dgvEditCHFLET.Columns[3].ReadOnly = false;
                dgvEditCHFLET.Columns[3].HeaderText = "Assignment";

                dgvEditCHFLET.Columns[4].Width = 76;
                dgvEditCHFLET.Columns[4].ReadOnly = false;
                dgvEditCHFLET.Columns[4].HeaderText = "Appointed";

                dgvEditCHFLET.Columns[5].Width = 40;
                dgvEditCHFLET.Columns[5].ReadOnly = false;
                dgvEditCHFLET.Columns[5].HeaderText = "Shift";

                dgvEditCHFLET.Columns[6].Width = 80;
                dgvEditCHFLET.Columns[6].ReadOnly = false;
                dgvEditCHFLET.Columns[6].HeaderText = "Shield Number";
                dgvEditCHFLET.Columns[6].Visible = false;

                dgvEditCHFLET.Columns[7].Width = 102;
                dgvEditCHFLET.Columns[7].ReadOnly = false;
                dgvEditCHFLET.Columns[7].HeaderText = "Rank";

                dgvEditCHFLET.Columns[8].Width = 80;
                dgvEditCHFLET.Columns[8].ReadOnly = false;
                dgvEditCHFLET.Columns[8].HeaderText = "Date of Rank";

                dgvEditCHFLET.Columns[9].Width = 60;
                dgvEditCHFLET.Columns[9].ReadOnly = false;
                dgvEditCHFLET.Columns[9].HeaderText = "PIN Number";

                dgvEditCHFLET.Columns[10].Visible = false;

                dgvEditCHFLET.EditMode = DataGridViewEditMode.EditOnEnter;
                dgvEditCHFLET.Focus();

            }
            catch (Exception ex)
            {
                string eMsg = "EditCHFLET Error:001 + ex.Message";
                if (Model.StackTraceWanted) eMsg += "\n" + ex.StackTrace;
                MessageBox.Show(eMsg);
            }
        }

===================================================================================
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                _commandBuilder.GetUpdateCommand();

                EditCHFLETDataAdapter.Update(EditCHFLETDataSet);

                DisplayEditCHFLET(); /* Refresh the screen */
            }
            catch (Exception ex)
            {
                string eMsg = "EditCHFLET Error:002 + ex.Message";
                if (Model.StackTraceWanted) eMsg += "\n" + ex.StackTrace;
                MessageBox.Show(eMsg);
            }
        }
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

>>The more I read about commandbuilder the less I think I should be using it.

Why do you say that?  Does it not work for you?
Avatar of rwheeler23

ASKER

commandbuilder does not support sql joins. This make it very limiting. I would need to build a sql view first.
This question needs an answer!
Become an EE member today
7 DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform.
View membership options
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.