Playing with DataGrid Control

转载 2004年07月19日 17:03:00

The article ?Playing with DATAGRID? presented above gives a user the overview to show the importance and versatility of the DATAGRID control.

Introduction <?XML:NAMESPACE PREFIX = O />


Accessing data has become a major programming task for modern software programming, both for standalone applications and for web-based applications. Microsoft's ADO.NET technology offers a solution to many of the problems associated with data access. Among the important part of ADO.NET ,DATAGRID control holds an important stature. Below is presented an article on DATAGRID and other related classes and how the user can play with them.

The versatile DataGrid control displays tabular data and supports selecting, sorting, and editing the data. Each data field is displayed in a separate column in the order it is stored in the database.

Adding Rows, columns and controls to the DataGrid dynamically


//include all the required namespaces

using System;



















public class TestDataGrid : System.Windows.Forms




/// Required designer variable.


private System.Windows.Forms.ComboBox cmbFunctionArea;
private DataTable                     dtblFunctionalArea;
private DataGrid                      dgdFunctionArea;


/// public constructor




public frmInitialShortListing()


      //automatically generated by the VS Designer

      //creates the object of the above designer variables



private void PopulateGrid()
      //Declare and initialize local variables used
DataColumn dtCol = null;//Data Column variable
string[]   arrstrFunctionalArea = null;//string array variable
System.Windows.Forms.ComboBox cmbFunctionArea;  //combo box var              
DataTable dtblFunctionalArea;//Data Table var


//Create the combo box object and set its properties
cmbFunctionArea               = new ComboBox();
cmbFunctionArea.Cursor        = System.Windows.Forms.Cursors.Arrow;
cmbFunctionArea.Dock          = DockStyle.Fill;
//Event that will be fired when selected index in the combo box is changed
      cmbFunctionArea.SelectionChangeCommitted += new   EventHandlercmbFunctionArea_SelectedIndexChanged);


//Create the String array object, initialize the array with the column
//names to be displayed
arrstrFunctionalArea          = new string [3];
arrstrFunctionalArea[0]       = "Functional Area";
arrstrFunctionalArea[1]       = "Min";
arrstrFunctionalArea[2]       = "Max";


//Create the Data Table object which will then be used to hold
//columns and rows
dtblFunctionalArea            = new DataTable ("FunctionArea");

      //Add the string array of columns to the DataColumn object       
for(int i=0; i< 3;i++)
string str        = arrstrFunctionalArea[i];
dtCol             = new DataColumn(str);
dtCol.DataType          = System.Type.GetType("System.String");
dtCol.DefaultValue      = "";

      //Add a Column with checkbox at last in the Grid     
      DataColumn dtcCheck    = new DataColumn("IsMandatory");//create the data          //column object with the name 
      dtcCheck.DataType      = System.Type.GetType("System.Boolean");//Set its //data Type
dtcCheck.DefaultValue  = false;//Set the default value
      dtblFunctionalArea.Columns.Add(dtcCheck);//Add the above column to the //Data Table

//Set the Data Grid Source as the Data Table createed above
dgdFunctionArea.DataSource    = dtblFunctionalArea; 

//set style property when first time the grid loads, next time onwards it //will maintain its property
//Create a DataGridTableStyle object     
DataGridTableStyle dgdtblStyle      = new DataGridTableStyle();
//Set its properties
            dgdtblStyle.MappingName            = dtblFunctionalArea.TableName;//its table name of dataset
dgdtblStyle.RowHeadersVisible       = false;
dgdtblStyle.HeaderBackColor         = Color.LightSteelBlue;
dgdtblStyle.AllowSorting            = false;
dgdtblStyle.HeaderBackColor         = Color.FromArgb(8,36,107);
dgdtblStyle.RowHeadersVisible       = false;
dgdtblStyle.HeaderForeColor         = Color.White;
dgdtblStyle.HeaderFont              = new System.Drawing.Font("Microsoft Sans Serif", 9F,  
                System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
dgdtblStyle.GridLineColor           = Color.DarkGray;
dgdtblStyle.PreferredRowHeight            = 22;
dgdFunctionArea.BackgroundColor           = Color.White; 

//Take the columns in a GridColumnStylesCollection object and set //the size of the
//individual columns   
GridColumnStylesCollection    colStyle;
colStyle                = dgdFunctionArea.TableStyles[0].GridColumnStyles;
colStyle[0].Width             = 100;
colStyle[1].Width       = 50;
colStyle[2].Width       = 50;
colStyle[3].Width       = 80;


//To add the combo box dynamically to the data grid, you have to take the // Text Box that is present (by default) in the column where u want to add //this combo box (here it is first column i.e. Functional Area).From the //tablestyles of the data grid take the grid column styles of the column //where you want to add the combo box respectively.

            DataGridTextBoxColumn dgtb    =     (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];

      //Add the combo box to the text box taken in the above step


dgtb.TextBox.Controls.Add (cmbFunctionArea);   

Note:-//After these add the code to fill the details in the grid by //establishing
// connection to the server and writing necessary steps: 

  }//end of the class

}//end of the namespace


Fig below depicts the concept discussed above:

Figure 1:   Adding Rows,Columns and Controls Dynamically to the Data



Combo Box Control Added to the Functional Area Column (For each Row) dynamically. 

How to Add Check Boxes to a DataGrid

//call this below method after initialize component


private void PopulateShortlistGrid()


DataColumn        dtcShortlist;

//Combo box control added as discussed above   

cmbWorkflow                   = new ComboBox();

cmbWorkflow.Cursor            = System.Windows.Forms.Cursors.Arrow;

cmbWorkflow.DropDownStyle     = System.Windows.Forms.ComboBoxStyle.DropDownList;

cmbWorkflow.Dock              = DockStyle.Fill;

dtbShortlist                  = new DataTable("ShortList");

strColumnName          = null;

string []arrstrSearch         = null;

arrstrSearch                  = new string[4];

arrstrSearch[1]               = "Candidate Code";

arrstrSearch[2]               = "Candidate Name";
arrstrSearch[3]               = "Workflow";

//Adding a check box control in the first column of the data grid

//create a Data Column object with Column Name as ?Select?span style="mso-tab-count:1"> 

DataColumn  dtcCheck          = new DataColumn("Select");

//Set the data type of the checkbox i.e. to Boolean

dtcCheck.DataType             = System.Type.GetType("System.Boolean");

//Set its default value as false

dtcCheck.DefaultValue         = false;

//add the above check box column to the data table


//Also add the other three columns i.e. Candidate Code, Candidate //Name and Workflow respectively

(int intI=1; intI< 4;intI++)

strColumnName     = arrstrSearch[intI];

dtcShortlist      = new DataColumn(strColumnName);

dtcShortlist.DataType = System.Type.GetType("System.String");   

dgdShortList.DataSource       = dtbShortlist; 




                        Figure below depicts the above discussion:



Figure: Added as the first column to the Data Grid  

Focusing a particular cell in the Data Grid


To focus a particular cell in the grid created above, you have to focus on the TextBox Control that is present in each cell of the DataGrid created above. To take the text box present in the grid cell which u want to focus, follow the steps followed below:

//Bring the focus to the grid in which the cell is present (where u want //the focus)



//Create a DataGrid Cell object and take the Cell by passing Row and //Column number respectively

DataGridCell dgc = new DataGridCell(1,1); //here it is 2ndrow, 2nd Column 

//Make the current cell of the grid as the cell u have taken above i.e. 
//the cell where u need the focus to be 
dgdLoad.CurrentCell = dgc; 
//To take the text Box of the cell where u want the focus to be take 
//it from the Table Styles of the grid and in that the column style 
 //by passing the column number where u wants the focus to be   
DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdLoad.TableStyles[0].GridColumnStyles[2];

//Focus on the text box i.e. in turn on cell where u need the focus 



Figure below signifies the above concept:

Fig 2: Focus to the particular cell in a Data Grid




About the Author:
Tushar Ameta is an engineering graduate. He is working with a Software MNC in Bangalore,India. He has been working on the .NET and C# for the past 10 months.

Any queries welcome: Email id:


夏乙 编译自 DeepMind blog量子位 出品 | 公众号 QbitAI别小看这个笨拙地抓起、移动着物体的机器人,它可是DeepMind的最新研究成果。有什么特别之处呢?这个机械臂可是在现实世界...
  • yH0VLDe8VG8ep9VGe
  • yH0VLDe8VG8ep9VGe
  • 2018年03月02日 00:00
  • 45

HZAU 1099 Die Die Die!(分类讨论水题)

1099: Die Die Die! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 3514  Solved: 483 [Submit][Sta...
  • hhu1506010220
  • hhu1506010220
  • 2016年12月18日 22:20
  • 386

有关ActiveX控件中的DataGrid或ADO Data控件在vc++6.0和VS 版本中的使用

系统环境:Windows 7 + VC6.0 + VS2008 当在VC++6.0中"Project"-->"Add to Project"-->"Componets and Controls"--...
  • zhangyulin54321
  • zhangyulin54321
  • 2012年10月30日 16:54
  • 5981

DataGrid Control, EditText Control

DataGrid Control, EditText Control By IlyasovAM, 26 Feb 2007  ...
  • aasmfox
  • aasmfox
  • 2012年11月28日 13:09
  • 514

Playing Atari with Deep Reinforcement Learning算法解读

前言 最近一直弄RL,看了一下DeepMind的文章和代码。记录一下个人对算法的理解。 文章地址
  • hmxiaobao
  • hmxiaobao
  • 2016年05月02日 19:53
  • 1560


我用的数据库是ACCESS 2003,查了好多资料才知道ACCESS用的是JET SQL,而SQL SERVER 用的是T-SQL,有很大差别,JET SQL是相当烂的,很多不支持,本来想用dec...
  • harvic880925
  • harvic880925
  • 2012年07月26日 21:02
  • 3451


1.基于mx:DataGridItemRenderer编写自定义组件:BoldFontRender.mxml文件 代码如下 xmlns:s="library://
  • cl7689881
  • cl7689881
  • 2015年12月14日 17:39
  • 133

DataGrid Web Control 基本操作

dgCategory是用于显示类别表的DataGrid自动分页:AllowPaging= TRUE!!!!private void dgCategory_PageIndexChanged(object...
  • johnsonTj
  • johnsonTj
  • 2005年03月20日 02:05
  • 773

Extending the DataGrid Control

Introduction:In this article, I will explain how to extend the DataGrid class to provide some new fu...
  • waterboy
  • waterboy
  • 2004年08月30日 13:09
  • 696

Using DropDownList control in DataGrid

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 03:43
  • 130
您举报文章:Playing with DataGrid Control