Quantcast
Channel: Windows Forms Data Controls and Databinding forum
Viewing all articles
Browse latest Browse all 2535

How to get data dynamically from combo box inside datagridview

$
0
0

Hi

I am using datagridview to add,delete data dynamically.I am adding row by row.

I am using the link http://www.dreamincode.net/forums/topic/238727-insert-update-and-delete-records-in-table-with-datagridview-using-c%23/ to add ,delete data dynamically

 I want to use  combo box for FirstName to display  inside datagridview .

If FirstName  is selected ,I want to display all other details for that row.

I have given the code which i tried

  public partial class Form1 : Form
    {
        int MaxIRSNo;
        SqlConnection sqlCon = new SqlConnection("Data Source=prs\\MSSQLSERVER2;Initial Catalog=prs4;User ID=prs1;Password=prs1");
        SqlCommandBuilder sqlCommand = null;
        SqlDataAdapter sqlAdapter = null;
        DataSet dataset = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
              
            try
            {
                sqlCon.Open();
                LoadData();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void LoadData()
        {
            try
            {
                sqlAdapter = new SqlDataAdapter("SELECT [EmployeeID],[LastName],[FirstName] ,[Title],[HireDate],PostalCode, 'Delete' AS [Delete] FROM Employees", sqlCon);
                sqlCommand = new SqlCommandBuilder(sqlAdapter);

                sqlAdapter.InsertCommand = sqlCommand.GetInsertCommand();
                sqlAdapter.UpdateCommand = sqlCommand.GetUpdateCommand();
                sqlAdapter.DeleteCommand = sqlCommand.GetDeleteCommand();
                DataGridViewComboBoxColumn FirstName = new DataGridViewComboBoxColumn();
                FirstName.Items.Add("xxx");
                FirstName.Items.Add("yyy");
                dgvEmployee.Columns.Add(FirstName);
                dataset = new DataSet();
                sqlAdapter.Fill(dataset, "Employees");
                dgvEmployee.DataSource = null;
               dgvEmployee.DataSource = dataset.Tables["Employees"];
                dgvEmployee.AutoGenerateColumns = false;                  
                for (int i = 1; i < dgvEmployee.Rows.Count; i++)
                {  DataGridViewLinkCell linkCell = new DataGridViewLinkCell();                                      
                }            
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void dgvEmployee_UserAddedRow(object sender, DataGridViewRowEventArgs e)
        {
            try
            {
                int lastRow = dgvEmployee.Rows.Count - 2;
                DataGridViewRow nRow = dgvEmployee.Rows[lastRow];
                DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
                dgvEmployee[6, lastRow] = linkCell;
                nRow.Cells["Delete"].Value = "Insert";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void dgvEmployee_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex == 6)
                {
                    string Task = dgvEmployee.Rows[e.RowIndex].Cells[6].Value.ToString();
                    if (Task == "Delete")
                    {
                        if (MessageBox.Show("Are you sure to delete?", "Deleting...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            int rowIndex = e.RowIndex;
                            dgvEmployee.Rows.RemoveAt(rowIndex);
                            dataset.Tables["Employees"].Rows[rowIndex].Delete();
                            sqlAdapter.Update(dataset, "Employees");
                        }
                    }
                    else if (Task == "Insert")
                    {
                        int row = dgvEmployee.Rows.Count - 2;
                        DataRow dr = dataset.Tables["Employees"].NewRow();
                        dr["LastName"] = dgvEmployee.Rows[row].Cells["LastName"].Value;
                        dr["FirstName"] = dgvEmployee.Rows[row].Cells["FirstName"].Value;
                        dr["Title"] = dgvEmployee.Rows[row].Cells["Title"].Value;
                        dr["HireDate"] = dgvEmployee.Rows[row].Cells["HireDate"].Value;
                        dr["PostalCode"] = dgvEmployee.Rows[row].Cells["PostalCode"].Value;
                        dataset.Tables["Employees"].Rows.Add(dr);
                        dataset.Tables["Employees"].Rows.RemoveAt(dataset.Tables["Employees"].Rows.Count - 1);
                        dgvEmployee.Rows.RemoveAt(dgvEmployee.Rows.Count - 2);
                        dgvEmployee.Rows[e.RowIndex].Cells[6].Value = "Delete";
                        sqlAdapter.Update(dataset, "Employees");
                    }
                    else if (Task == "Update")
                    {
                        int r = e.RowIndex;
                        dataset.Tables["Employees"].Rows[r]["LastName"] = dgvEmployee.Rows[r].Cells["LastName"].Value;
                        dataset.Tables["Employees"].Rows[r]["FirstName"] = dgvEmployee.Rows[r].Cells["FirstName"].Value;
                        dataset.Tables["Employees"].Rows[r]["Title"] = dgvEmployee.Rows[r].Cells["Title"].Value;
                        dataset.Tables["Employees"].Rows[r]["HireDate"] = dgvEmployee.Rows[r].Cells["HireDate"].Value;
                        dataset.Tables["Employees"].Rows[r]["PostalCode"] = dgvEmployee.Rows[r].Cells["PostalCode"].Value;
                        sqlAdapter.Update(dataset, "Employees");
                        dgvEmployee.Rows[e.RowIndex].Cells[6].Value = "Delete";
                    }
                }
            }
            catch (Exception ex) { }   
        }
        void cb_SelectedIndexChanged(object sender, EventArgs e)
        {
            //getting last name,postalcode,Title,HireDate based on combobox selected value "FirstName"
            //I have to check with selected value in combobox.
        }            
        private void dgvEmployee_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox cb = e.Control as ComboBox;
            if (cb != null)
            {
                // first remove event handler to keep from attaching multiple:
                cb.SelectedIndexChanged -= new
                EventHandler(cb_SelectedIndexChanged);
            }
        }     
    }

 In the URL exampe,unbound design controls are not used.

Pleae help me

Regards

Chandran.


Viewing all articles
Browse latest Browse all 2535

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>