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

DataGridView Cell value is lost when focus is moved to the next cell

$
0
0

Hi,

 I am facing a very strange problem with DataGridview used for my WindowsApplication. I am using entity framework and .net framework 4 for the application. The issue I am facing is, when i click the Search Button I am displaying the values on a DataGridView and user can edit the ParameterValue which is an editable cell. However, What happens when I edit a cell and move the control to the next cell the value of the previous cell is lost and becoming empty. I am trying to find a fix for this issue. Please help.

Step 1: Entered a value as highlighted 

Step2 : After entering the value I am moving my control to the next cell. I am lost. the previous value is not retained

Source code for the Windows form is mentioned below. Please let me know which event I should call to retain the  value of the gridview cell.

using System;
using System.Linq;
using System.Windows.Forms;
using System.Data.Entity;
using System.Collections.Generic;
using BiDashBoard.DAL;

namespace BiDashBoard
{
    public partial class BiDashBoardUI : Form
    {
        BiDashBoard.DAL.Entities dataContext  = new DAL.Entities();
         List<Area> lstArea = new List<Area>();


        public BiDashBoardUI()
        {
            InitializeComponent();
            BiDataGridView.Visible = false;
            labelWarning.Visible = false;
            dataContext.EPMSBiParamMasters.Load();
            dataContext.EPMSBiTransactions.Load();

          //  BiDataGridView.ReadOnly = false;

        }

        private void button1_Click(object sender, EventArgs e)
        {
           var query= from c in dataContext.EPMSBiTransactions
                      join p in dataContext.EPMSBiParamMasters on c.ParamCode equals p.ParameterCode
                      where c.ParamDate >= dateTimePickerStart.Value && c.ParamDate <= dateTimePickerEnd.Value

                      select new { c.ParamDate,p.ParameterCode,p.ParameterDescription,c.ParameterValue } ;





           // var results = query.ToList().OrderBy(p=>p.ParamDate);
           var results = query.ToList();

           if (results.Count() > 0)
           {
               BiDataGridView.Visible = true;
               BiDataGridView.DataSource = null;
               //Set AutoGenerateColumns False
               BiDataGridView.AutoGenerateColumns = false;

              // Set Columns Count
               BiDataGridView.ColumnCount = 4;

              // Add Columns
               BiDataGridView.Columns[0].Name = "ParamDate";
               BiDataGridView.Columns[0].HeaderText = "ParamDate";
               BiDataGridView.Columns[0].DataPropertyName = "ParamDate";




               BiDataGridView.Columns[1].Name = "ParameterCode";
               BiDataGridView.Columns[1].HeaderText = "ParameterCode";
               BiDataGridView.Columns[1].DataPropertyName = "ParameterCode";

               BiDataGridView.Columns[2].HeaderText = "Parameter Description";
               BiDataGridView.Columns[2].Name = "ParameterDescription";
               BiDataGridView.Columns[2].DataPropertyName = "ParameterDescription";
               BiDataGridView.Columns[2].Width = 500;

               BiDataGridView.Columns[3].Name = "ParameterValue";
               BiDataGridView.Columns[3].HeaderText = "ParameterValue";
               BiDataGridView.Columns[3].DataPropertyName = "ParameterValue";

               BiDataGridView.ReadOnly = false;
               BiDataGridView.Columns[0].ReadOnly = true;
               BiDataGridView.Columns[1].ReadOnly = true;
               BiDataGridView.Columns[2].ReadOnly = true;
               BiDataGridView.Columns[3].ReadOnly = false;



               BiDataGridView.DataSource = results;


               labelWarning.Visible =false;




           }
           else
           {
               labelWarning.Visible = true;
               BiDataGridView.DataSource = null;
           }



        }


        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonUpdate_Click(object sender, EventArgs e)
        {

            //var query = from c in dataContext.EPMSBiTransactions
            //           // join p in dataContext.EPMSBiParamMasters on c.ParamCode equals p.ParameterCode
            //            where c.ParamDate >= dateTimePickerStart.Value && c.ParamDate <= dateTimePickerEnd.Value

            //            select new { c.ParamDate,c.ParameterValue };


            //foreach (var product in query.ToList())
            //{
            //    if (product.ParameterValue == null)
            //    {
            //        query.ToList().Remove(product);

            //    }
            //}

            foreach (var product in dataContext.EPMSBiTransactions.Where(c=>c.ParamDate >=  dateTimePickerStart.Value  && c.ParamDate  <= dateTimePickerEnd.Value ))
            {
                if (product.ParameterValue == null)
                {
                    dataContext.EPMSBiTransactions.Remove(product);
                }
            }


            dataContext.SaveChanges();
            // Refresh the grids so the database generated values show up.
            this.BiDataGridView.Refresh();


        }




        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BiDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
            {
                if (BiDataGridView.CurrentCell.ColumnIndex == BiDataGridView.Columns.IndexOf(BiDataGridView.Columns["ParameterValue"]))
                {

                    BiDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = false;

                    BiDataGridView.CurrentCell = BiDataGridView[e.ColumnIndex, e.RowIndex];

                    BiDataGridView.BeginEdit(false);


                }
            }
        }


        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BiDataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            DataGridViewCell cell = BiDataGridView[e.ColumnIndex, e.RowIndex];

        }

        private void BiDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {



        }

        private void BiDataGridView_MouseClick(object sender, MouseEventArgs e)
        {


           // BiDataGridView.BeginEdit(false);
        }

        private void BiDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {


            foreach (var values in BiDataGridView.Rows)
            {
                DataGridViewCell cell = BiDataGridView[e.ColumnIndex, e.RowIndex];
                if (cell.EditedFormattedValue != null)
                {
                  var cellvalues  = cell.EditedFormattedValue.ToString();
                }

            }

        }

        private void BiDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {

        }

        private void BiDataGridView_RowValidated(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewCell cell = BiDataGridView[e.ColumnIndex, e.RowIndex];
        }

        private void BiDataGridView_SelectionChanged(object sender, EventArgs e)
        {

        }

        private void BiDataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            if ((BiDataGridView.IsCurrentCellDirty) & (BiDataGridView.CurrentCell.ColumnIndex == 0))
            {
                BiDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }

        private void BiDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {


            BiDataGridView.Invalidate();

        }

        private void BiDataGridView_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
            if (e.StateChanged != DataGridViewElementStates.Selected) return;
        }//




    } //class
} //method
Entity DBContext file
namespace BiDashBoard.DAL
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class Entities : DbContext
    {
        public Entities()
            : base("name=Entities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public DbSet<EPMSBiParamMaster> EPMSBiParamMasters { get; set; }
        public DbSet<EPMSBiTransaction> EPMSBiTransactions { get; set; }
    }
}

I am using ADO.netEntityDataModel for my project.Please help

-pep


Viewing all articles
Browse latest Browse all 2535

Trending Articles



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