-
Junior Member
How to add check box in a datagrid in windows application
How to add check box in a datagrid in windows application (C# 1.14).
I have created a windows application which consists of data grid with data set . now i need to include a check box in the same grid...
The row which has selected check box need to perform some action...
can some one help me out please....
thanks in advance.....
-
Junior Member
Re: How to add check box in a datagrid in windows application
Hi,
You have to use tablestyles while bind the data to grid,
Create DataGridColumnStyle for each column.
for first column if u need check box follow this code.
DataGridTableStyle tblstyle = new DataGridTableStyle();
DataGridBoolColumn chkboxCol=new DataGridBoolColumn();
discontinuedCol.MappingName = "chkbox";
discontinuedCol.HeaderText = "";
discontinuedCol.Width = 30;
chkboxCol.AllowNull = false;
tblstyle .GridColumnStyles.Add(chkboxCol);
-
Junior Member
Re: How to add check box in a datagrid in windows application
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Collections;
using System.Windows.Forms;
namespace datagridexample
{
public partial class Form1 : Form
{
public Form1(ArrayList items, ArrayList op)
{
InitializeComponent();
this.LlenarDG(this.dataGrid1, items, op);
}
private void LlenarDG(DataGrid dg, ArrayList items, ArrayList op)
{
//limpiar el dg por si tiene algo
dg.DataSource = null;
DataTable dt = new DataTable("Listado");
DataColumn[] collumns = new DataColumn[op.Count +1];
collumns[0] = new DataColumn("Item", typeof(string));
dt.Columns.Add(collumns[0]);
for (int i = 0; i < op.Count; i++)
{
string text = (string)op[i];
dt.Columns.Add(new DataColumn(text, typeof(bool)));
}
DataSet ds = new DataSet();
ds.Tables.Add(dt);
dg.SetDataBinding(ds, "Listado");
AddData(dt,items);
//ajustar el tamano de las columnas
this.SizeColumnsToContent(dg,op.Count,dg.Width);
}
public void SizeColumnsToContent(DataGrid dataGrid, int CantidadColumnas, int AnchoControl)
{
// Create graphics object for measuring widths.
Graphics Graphics = dataGrid.CreateGraphics();
// Define new table style.
DataGridTableStyle tableStyle = new DataGridTableStyle();
try
{
DataTable dataTable = ((DataSet)dataGrid.DataSource).Tables[0];
// Clear any existing table styles.
dataGrid.TableStyles.Clear();
// Use mapping name that is defined in the data source.
tableStyle.MappingName = dataTable.TableName;
// Now create the column styles within the table style.
//DataGridTextBoxColumn columnStyle;
int iWidth = (AnchoControl - 70) / CantidadColumnas;
// Create the style for the first collumn
DataColumn dataColumn = dataTable.Columns[0];
DataGridTextBoxColumn columnStyle = new DataGridTextBoxColumn();
columnStyle.TextBox.Enabled = true;
columnStyle.HeaderText = dataColumn.ColumnName;
columnStyle.MappingName = dataColumn.ColumnName;
// Set width to header text width.
iWidth = (int)(Graphics.MeasureString(columnStyle.HeaderText, dataGrid.Font).Width);
// Change width, if data width is wider than header text width.
// Check the width of the data in the first X rows.
DataRow dataRow;
for (int iRow = 0; iRow < dataTable.Rows.Count; iRow++)
{
dataRow = dataTable.Rows[iRow];
if ( dataRow[dataColumn.ColumnName] != null)
{
int iColWidth = (int)(Graphics.MeasureString(dataRow.
ItemArray[0].ToString(),
dataGrid.Font).Width);
iWidth = (int)System.Math.Max(iWidth, iColWidth);
}
}
columnStyle.Width = iWidth+2;
// Add the new column style to the table style.
tableStyle.GridColumnStyles.Add(columnStyle);
// Create the style for the rest of the collumns
DataGridBoolColumn columnStyle1 = new DataGridBoolColumn();
for (int iCurrCol = 1; iCurrCol < dataTable.Columns.Count;
iCurrCol++)
{
dataColumn = dataTable.Columns[iCurrCol];
columnStyle1 = new DataGridBoolColumn();
columnStyle1.HeaderText = dataColumn.ColumnName;
columnStyle1.MappingName = dataColumn.ColumnName;
//columnStyle1.FalseValue = false;
//columnStyle1.TrueValue = true;
// Set width to header text width.
iWidth = (int)(Graphics.MeasureString(columnStyle1.HeaderText,
dataGrid.Font).Width);
// Change width, if data width is wider than header text width.
// Check the width of the data in the first X rows.
for (int iRow = 0; iRow < dataTable.Rows.Count; iRow++)
{
dataRow = dataTable.Rows[iRow];
if (null != dataRow[dataColumn.ColumnName])
{
int iColWidth = (int)(Graphics.MeasureString(dataRow.
ItemArray[iCurrCol].ToString(),
dataGrid.Font).Width);
iWidth = (int)System.Math.Max(iWidth, iColWidth);
}
}
columnStyle1.Width = iWidth+2;
// Add the new column style to the table style.
tableStyle.GridColumnStyles.Add(columnStyle1);
}
// Add the new table style to the data grid.
dataGrid.TableStyles.Add(tableStyle);
//dataGrid.Width =
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
Graphics.Dispose();
}
}
private void AddData(DataTable t, ArrayList i)
{
// Add data with for the id field.
DataRow row;
foreach (string s in i)
{
row = t.NewRow();
row["Item"] = s;
t.Rows.Add(row);
}
t.AcceptChanges();
}
}
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules