• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 471
  • Last Modified:

C# -- WinForms "Save Changes" Message ?

Currently I have the below
which displays the attached.
--------------------------------------------
        private void Optimistic_FormClosing(object sender, FormClosingEventArgs e)
        {          
            this.Validate();
            this.gML_ITEMMSTR_OptimisticBindingSource.EndEdit(); // iTEMDETAILSBindingSource

            if (this.dataSet1.GML_ITEMMSTR_Optimistic.GetChanges() != null) // iTEMDETAILS
            {
                int response = Convert.ToInt32(MessageBox.Show("Save Changes ?", "Save", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning));

                if (response == (Int32)DialogResult.Yes)
                {
                    this.tableAdapterManager.UpdateAll(this.dataSet1);
                    this.Dispose();
                }

                if (response == (Int32)DialogResult.No)
                {
                    e.Cancel = false;
                }

                else
                {
                    e.Cancel = true;
                }
            }
                       
        }
--------------------------------------------
How can I get it to HIGHLIGHT all changes
in YELLOW or something so users can see what
items they changed before clicking "Save" since
they might have changed something by mistake ?

F:\toONTIME\1
0001.jpg
0
finance_teacher
Asked:
finance_teacher
  • 4
  • 3
1 Solution
 
rajeeshmcaCommented:
Hi finance_teacher,

How are you going to initially get the changed data fromthe grid
0
 
finance_teacherAuthor Commented:
I am new at C# and am trying to find an easy way to do this.

Maybe something like
   if (this.dataSet1.GML_ITEMMSTR_Optimistic.GetChanges() != null)
       {
           this.dataGridView1.textboxThatErrored.BackColor = Yellow;
          etc

The below links talk about ".GetChanges",
but I am having trouble getting it to work.
-------------------------------------------------------------------------------------------------
http://msdn.microsoft.com/en-us/library/thc1eetk%28VS.80%29.aspx
http://msdn.microsoft.com/de-de/library/system.data.datatable.select%28VS.80%29.aspx
http://msdn.microsoft.com/en-us/library/a4ey25we.aspx
http://msdn.microsoft.com/en-us/library/system.data.dataset.getchanges.aspx
0
 
rajeeshmcaCommented:
Hi finance teacher,

Try the below code

private void GridViewForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.dataSet1.HasChanges())
            {
                int response = Convert.ToInt32(MessageBox.Show("Save Changes ?", "Save", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning));

                if (response == (Int32)DialogResult.Yes)
                {
                    //this.tableAdapterManager.UpdateAll(this.dataSet1);
                    //this.Dispose();
                    for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
                    {
                        for(int j=0;j<dataGridView1.Columns.Count-1;j++)
                        {
                            if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i].RowState == DataRowState.Modified)
                            {
                                for (int k = 0; k < jKCPDataSet.FamilyD.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR_Optimistic.Columns[k].Caption == dataGridView1.Columns[j].HeaderText)
                                    {
                                        if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i][k, DataRowVersion.Original] != dataGridView1[j, i].Value)
                                        {
                                            dataGridView1[j, i].Style.BackColor = Color.Yellow;
                                        }
                                        break;
                                    }
                                }
                            }
                            else if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i].RowState == DataRowState.Added)
                            {
                                for (int k = 0; k < jKCPDataSet.FamilyD.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR_Optimistic.Columns[k].Caption == dataGridView1.Columns[j].HeaderText)
                                    {
                                        dataGridView1[j, i].Style.BackColor = Color.Yellow;
                                        break;
                                    }
                                }
                            }
                            else
                                break;
                        }
                    }
                }
                if (response == (Int32)DialogResult.No)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                }

            }
        }

see that the Dataset column caption and the Datagridview column HeaderText remain same
0
Get quick recovery of individual SharePoint items

Free tool – Veeam Explorer for Microsoft SharePoint, enables fast, easy restores of SharePoint sites, documents, libraries and lists — all with no agents to manage and no additional licenses to buy.

 
finance_teacherAuthor Commented:
Everything entered OK, but
< jKCPDataSet.FamilyD.Columns.Count
errors with attached.

How can I fix ?
0001.jpg
0
 
rajeeshmcaCommented:
Hi finance Teacher,

Sorry for that. I was try ing with my dataset.

Just change like

private void GridViewForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.dataSet1.HasChanges())
            {
                int response = Convert.ToInt32(MessageBox.Show("Save Changes ?", "Save", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning));

                if (response == (Int32)DialogResult.Yes)
                {
                    //this.tableAdapterManager.UpdateAll(this.dataSet1);
                    //this.Dispose();
                    for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
                    {
                        for(int j=0;j<dataGridView1.Columns.Count-1;j++)
                        {
                            if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i].RowState == DataRowState.Modified)
                            {
                                for (int k = 0; k < this.dataSet1.GML_ITEMMSTR_Optimistic.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR_Optimistic.Columns[k].Caption == dataGridView1.Columns[j].HeaderText)
                                    {
                                        if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i][k, DataRowVersion.Original] != dataGridView1[j, i].Value)
                                        {
                                            dataGridView1[j, i].Style.BackColor = Color.Yellow;
                                        }
                                        break;
                                    }
                                }
                            }
                            else if (this.dataSet1.GML_ITEMMSTR_Optimistic.Rows[i].RowState == DataRowState.Added)
                            {
                                for (int k = 0; k < this.dataSet1.GML_ITEMMSTR_Optimistic.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR_Optimistic.Columns[k].Caption == dataGridView1.Columns[j].HeaderText)
                                    {
                                        dataGridView1[j, i].Style.BackColor = Color.Yellow;
                                        break;
                                    }
                                }
                            }
                            else
                                break;
                        }
                    }
                }
                if (response == (Int32)DialogResult.No)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                }

            }
        }

see that the Dataset column caption and the Datagridview column HeaderText remain same
0
 
rajeeshmcaCommented:
change to your dataset.table Thats it..
0
 
finance_teacherAuthor Commented:
Below works GREAT !
----------------------------------
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Validate();
            this.gML_ITEMMSTRBindingSource.EndEdit();
            if (this.dataSet1.HasChanges())
            {

                    for (int i = 0; i < gML_ITEMMSTRDataGridView.Rows.Count - 1; i++)
                    {
                        for (int j = 0; j < gML_ITEMMSTRDataGridView.Columns.Count - 1; j++)
                        {
                            // below does MODIFIED rows
                            if (this.dataSet1.GML_ITEMMSTR.Rows[i].RowState == DataRowState.Modified)
                            {
                                for (int k = 0; k < this.dataSet1.GML_ITEMMSTR.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR.Columns[k].Caption == gML_ITEMMSTRDataGridView.Columns[j].HeaderText)
                                    {
                                        if (this.dataSet1.GML_ITEMMSTR.Rows[i][k, DataRowVersion.Original] != gML_ITEMMSTRDataGridView[j, i].Value)
                                        {
                                            gML_ITEMMSTRDataGridView[j, i].Style.BackColor = Color.Yellow;
                                        }
                                        break;
                                    }
                                }
                            }
                            else if (this.dataSet1.GML_ITEMMSTR.Rows[i].RowState == DataRowState.Added)
                            {
                                for (int k = 0; k < this.dataSet1.GML_ITEMMSTR.Columns.Count - 1; k++)
                                {
                                    if (this.dataSet1.GML_ITEMMSTR.Columns[k].Caption == gML_ITEMMSTRDataGridView.Columns[j].HeaderText)
                                    {
                                        gML_ITEMMSTRDataGridView[j, i].Style.BackColor = Color.Yellow;
                                        break;
                                    }
                                }
                            }
                            else
                                break;
                        }
                    }

                //start
                    int response = Convert.ToInt32(MessageBox.Show("Save Changes ?", "Save", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning));

                    if (response == (Int32)DialogResult.Yes)
                    {
                        this.tableAdapterManager.UpdateAll(this.dataSet1);
                        this.Dispose();
                    }

                    if (response == (Int32)DialogResult.No)
                    {
                        e.Cancel = false;
                    }

                    else
                    {
                        e.Cancel = true;
                    }
                //end
            }

        }
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now