Help with c# checkbox

markyjj's Avatar, Join Date: Dec 2005
Go4Expert Member
Can someone please help me with the following problem. I currently have a datagrid linked to an sql database and in the grid I have a ckeckbox column. However, when I check the box in the current cell the checked box disappears when I click on another cell and only reappears only when I go back to the cell. I was wandering how I get the checked box to stay visible even when I click on another cell.

I would be grateful for any advice, many thanks.
nimesh's Avatar, Join Date: Apr 2009
Invasive contributor
what code did you add on checkbox_click event?

Also is this the windows application or web application?

Did you try debugging and checked what's the cause?
Seema786's Avatar
Banned
yup, can u plz provide source code ?
markyjj's Avatar, Join Date: Dec 2005
Go4Expert Member
Thanks for the reply, please find below the main part of the code that I am using to create and add the checkbox column to the datagrid which is also linked to sql express database. At the moment, when I check a box in a check a box, the cell displays back to null when I click on another cell. however, when I click back in the checked cell, the checkbox is shown as checked but the cell is still classed as null when I try and update the changes to the Sql database. Thanks for any help.


//code//
Code:
	//Define controls must be added to data grid.		
		private ComboBox cboControl	 =	new ComboBox();
		private ComboBox cboControl2 =  new ComboBox();
		

		//Control definishion to add to DataGrid
		DataGridTableStyle dataGridStyle = new DataGridTableStyle();

		//Create the TextBox columns for the datagrid columns
		DataGridTextBoxColumn aCol1 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn aCol2 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn aCol3 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn aCol4 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn aCol5 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn aCol6 = new DataGridTextBoxColumn();
		CheckBox chk1 = new CheckBox();        
		DataView Dv;
		public string Movstring;
		public string Combostr;
		public int CurRow = -1;
		public int CurCol = -1;
		public string CellValue;
		public bool strValue = false;
		private System.Windows.Forms.Button button11;
		private System.Windows.Forms.Button button12;
		private System.Windows.Forms.Button Findbtn;
		public System.Windows.Forms.Button UpdateSavebtn;
		public bool imageswitch;
		public void Imagescrn()
		{
			this.BackgroundImage = Image.FromFile("C:\\Documents and Settings\\Mark\\My Documents\\My Pictures\\house_pg2.jpg");
		}
		public void ImageMain()
		{
			this.BackgroundImage = Image.FromFile("C:\\Documents and Settings\\Mark\\My Documents\\My Pictures\\bg_page.jpg");
		}
        

		
		static void Main() 
		{
			Application.Run(new Form1());
		}
		
			
		
		
		public void Form1_Load(object sender, System.EventArgs e)
		{		
			//Add a new table style to datagrid.
			DesignTableStyle();
			dataGrid1.RowHeadersVisible = true;
			dataGrid1.DataSource = Movset1;
			MovAdapt.Fill(Movset1, "MovTable1");
			dataGrid1.DataSource	=	Movset1;
			label1.Show();
			Show();	   
			dataGrid1.Show();
									
		}


		//Add a new table style to datagrid.
		private void DesignTableStyle()
		{

			cboControl.Cursor    = Cursors.Arrow;
			cboControl2.Cursor   = Cursors.Arrow;
						
			dataGridStyle.MappingName=	"MovTable1";
			dataGridStyle.PreferredRowHeight	=	24;
			
			//
		
			// Create GridColumnStyle objects for the grid columns
			//			

			aCol1.HeaderText			        = "Item No";
			aCol1.MappingName		            = "Movie_Index";
			aCol1.Width				            = 50;
			

			dataGridStyle.GridColumnStyles.Add(aCol1);
			

			dataGrid1.TableStyles.Add(dataGridStyle);
						

			aCol2.HeaderText			        = "Title";
			aCol2.MappingName		            = "Title";
			aCol2.Width         				= 100;
			dataGridStyle.GridColumnStyles.Add(aCol2);
	

			dataGridComboBox.HeaderText			= "Category";
			dataGridComboBox.MappingName		= "Category";
			dataGridComboBox.Width				= 130;
			dataGridStyle.GridColumnStyles.Add(dataGridComboBox);

			dataGridComboBox2.HeaderText			= "Features";
			dataGridComboBox2.MappingName		    = "Features";
			dataGridComboBox2.Width				    = 130;
			dataGridStyle.GridColumnStyles.Add(dataGridComboBox2);

			aCol6.HeaderText			        = "Boxset";
			aCol6.MappingName		            = "Boxset";
			aCol6.Width				            = 100;
			dataGridStyle.GridColumnStyles.Add(aCol6);
			aCol6.TextBox.Controls.Add(chk1);          


		}

		
		private void label1_Click(object sender, System.EventArgs e)
		{
		
		}

		

		private void button2_Click(object sender, System.EventArgs e)
		{    
			this.Close();     			     
		}

		
		private void button4_Click(object sender, System.EventArgs e)
		{
			dataGrid1.Hide();
			label1.Hide();
			Imagescrn();
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'HORROR'";
		}

		private void button6_Click(object sender, System.EventArgs e)
		{
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'Action/Thriller'";
		}

		private void button8_Click(object sender, System.EventArgs e)
		{
			label1.Hide();
			this.BackgroundImage = Image.FromFile("C:\\Documents and Settings\\Mark\\My Documents\\My Pictures\\drama_pg.jpg");
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'Drama'";
		}

		private void button5_Click(object sender, System.EventArgs e)
		{
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'Family/Entertainment'";
		}

		private void button7_Click(object sender, System.EventArgs e)
		{
			label1.Hide();
			this.BackgroundImage = Image.FromFile("C:\\Documents and Settings\\Mark\\My Documents\\My Pictures\\scifi_pg.jpg");
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'Sci-Fi/Fantasy'";
		}

		private void button9_Click(object sender, System.EventArgs e)
		{
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;
			Dv.RowFilter = "Category = 'TV/Series'";
		}

		private void button10_Click(object sender, System.EventArgs e)
		{ 			
			ImageMain();
			dataGrid1.RowHeadersVisible = true;
			dataGrid1.DataSource = Movset1;
			label1.Show();
			Show();	   
		}


		private void textBox1_TextChanged(object sender, System.EventArgs e)
		{
			Movstring = textBox1.ToString();
		}

		private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
		{
			int Currncol = 0;
			Currncol = dataGrid1.CurrentCell.ColumnNumber;
			CurCol = dataGrid1.CurrentCell.ColumnNumber; 
			CurRow = dataGrid1.CurrentCell.RowNumber; 	
			dataGrid1.RowHeadersVisible = false;
			
			Currncol = dataGrid1.CurrentCell.ColumnNumber; 
			
			if(Currncol == 2)			{
				
				
					Combostr = this.cboControl.SelectedText.ToString();
					cboControl.SelectedIndexChanged+=new EventHandler(cboSelectedIndexChanged);										
				
			}
			
			if(Currncol == 3)
			{	
				
				
				Combostr = this.cboControl2.SelectedText.ToString();
				cboControl2.SelectedIndexChanged+=new EventHandler(cbo2SelectedIndexChanged);
						
			}		
				
			if(Currncol == 4)
			{			
				MessageBox.Show("Checked col has been clicked");	
				chk1.CheckedChanged +=new EventHandler(chk1_CheckedChanged);
                    

			}			
					
			
			Currncol = 0;

		}
		
					
			
		private void Form1_Enter(object sender, System.EventArgs e)
		{
			dataGrid1.RowHeadersVisible = true;
			
		}

		private void button12_Click(object sender, System.EventArgs e)
		{
			
			dataGrid1.Show();

		}

		private void Findbtn_Click(object sender, System.EventArgs e)
		{			
			Dv = new DataView(Movset1.Tables[0]);
			dataGrid1.DataSource = Dv;			
			Dv.RowFilter = "Title ='"+textBox1.Text+"'";
			if(textBox1.Text == "")
			{
				MessageBox.Show("Search failed: Movie Title has not been entered!! ");
				return;
			}
			
			if(Dv.Count < 1)
			{
				MessageBox.Show("Movie does not exist in MovieBase, please try again");
			}			 
		
		}

		private void UpdateSavebtn_Click_1(object sender, System.EventArgs e)
		{
			Mcon.Open();
			CurCol = dataGrid1.CurrentCell.ColumnNumber; 
			CurRow = dataGrid1.CurrentCell.RowNumber; 	
			CellValue = dataGrid1[CurRow, CurCol].ToString();
			MessageBox.Show(CellValue.ToString());
			if(CellValue == "")
			{

				MessageBox.Show("No Fields can be Blank - update failed");
				Movset1.RejectChanges();
				dataGrid1.Show();
				

				CurRow = -1;
				CurCol = -1;
				Mcon.Close();
				return;
				
			}
			CellValue = dataGrid1[CurRow, CurCol].ToString();
			CurRow = -1;
			CurCol = -1;

			MovAdapt.UpdateCommand = cb.GetUpdateCommand();
			MovAdapt.Update(Movset1.Tables[0]);
			Movset1.AcceptChanges();
                
			MessageBox.Show("MovieBase has been updated");
						
			Mcon.Close();
				
			
			dataGrid1.RowHeadersVisible = true;
		}

		private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
		{		  
			
			hitTestGrid = dataGrid1.HitTest(e.X, e.Y);

			//Add combobox control to datagrid.
			dataGridComboBox.TextBox.Controls.Add( cboControl );
			cboControl.Items.AddRange(new string[8]{"","Horror","Action/Thriller","TV/Series","Sci-fi/Fantasy","Family","Drama","Comedy"});

			dataGridComboBox2.TextBox.Controls.Add( cboControl2 );
			cboControl2.Items.AddRange(new string[4]{"","Standard","Extended Edtn","Directors Cut"});

 			
			
		}	

		//Initialize Conrols for adding in DataGrid cells.
		private void InitializeControls()
		{		
			//combobox property
			cboControl.Cursor			=	Cursors.Hand;
			cboControl.DropDownStyle	=	ComboBoxStyle.DropDownList;
			//combobox events.	
		
		}
		private void cboSelectedIndexChanged(object sender, System.EventArgs e)
		{			
			
			dataGrid1[CurRow, CurCol] = cboControl.SelectedItem.ToString();
			CurRow = 0;
			CurCol = 0;
			
		}

		private void cbo2SelectedIndexChanged(object sender, System.EventArgs e)
		{						
			dataGrid1[CurRow, CurCol] = cboControl2.SelectedItem.ToString();
			CurRow = 0;
			CurCol = 0;		
			
			
		}	
	
		private void chk1_CheckedChanged(object sender, EventArgs e)
		{
			if(chk1.Checked)
			{
				CurCol = 0;		
				CurCol = 0;		
				chk1.Enabled = true;
								
  

			}
		
		}		
	}
}

Last edited by shabbir; 11Aug2009 at 08:52.. Reason: Code blocks