We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

How do I insert an unbound check box column in a GridDataBoundGrid?

 

There are three steps needed to have an unbound checkbox column in the GridDataBoundGrid.

1. Add the unbound column to the GridDataBoundGrid.

2. A bounded column has it own datastore to store the values entered in it. But in an unbound column there is no datastore present in it, so it has to be handled manually by adding any collection like hashtable. To make unbound column work together with sort, assign key as corresponding primary key value in the row in the Key/Value pair of the external collection.

3. Then Model.QueryCellInfo event is used to display the values in the checkbox. The Model.SaveCellInfo event is used to save the changes made by the user in the checkbox.

C#

private void Form1_Load(object sender, System.EventArgs e)

{

...

GridBoundColumnsCollection column5 = (GridBoundColumnsCollection) this.gridDataBoundGrid1.Binder.InternalColumns.Clone();

GridBoundColumn Ucolumn5 = new GridBoundColumn();

Ucolumn5.HeaderText = "CheckBox";

Ucolumn5.MappingName = "CheckBox";

column5.Add(Ucolumn5);

this.gridDataBoundGrid1.Binder.GridBoundColumns = column5;

....

}

private void Model_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)

{

GridModel model = this.gridDataBoundGrid1.Model;

int ColIndex = this.gridDataBoundGrid1.Model.NameToColIndex("CheckBox");

if(e.RowIndex > 0 && e.ColIndex == ColIndex)

{

e.Style.CellType = "CheckBox";

e.Style.HorizontalAlignment = GridHorizontalAlignment.Center;

e.Style.VerticalAlignment = GridVerticalAlignment.Middle;

e.Style.CellValueType = typeof(bool);

e.Style.CheckBoxOptions.CheckedValue = "True";

e.Style.CheckBoxOptions.UncheckedValue = "False";

e.Style.Enabled = true;

int keyColIndex = model.NameToColIndex("Product_ID");

string key = model[e.RowIndex, keyColIndex].Text;

if (key != null)

{

object value = CheckBoxValues[key];//Display the value in a cell by retrieving it from HashTable

if (value != null)

e.Style.CellValue = value;

}

}

}

private void Model_SaveCellInfo(object sender, GridSaveCellInfoEventArgs e)

{

GridModel model = this.gridDataBoundGrid1.Model;

int ColIndex = this.gridDataBoundGrid1.Model.NameToColIndex("CheckBox");

if(e.RowIndex > 0 && e.ColIndex == ColIndex)

{

int keyColIndex = model.NameToColIndex("Product_ID");

string key = model[e.RowIndex, keyColIndex].Text;

if (key != null)

CheckBoxValues[key] = e.Style.CellValue;//Save the value in a HashTable

}

}

VB

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)

...

GridBoundColumnsCollection column5 = CType(Me.gridDataBoundGrid1.Binder.InternalColumns.Clone(), GridBoundColumnsCollection)

Dim Ucolumn5 As GridBoundColumn = New GridBoundColumn()

Ucolumn5.HeaderText = "CheckBox"

Ucolumn5.MappingName = "CheckBox"

column5.Add(Ucolumn5)

Me.gridDataBoundGrid1.Binder.GridBoundColumns = column5

....

End Sub

Private Sub Model_QueryCellInfo(ByVal sender As Object, ByVal e As GridQueryCellInfoEventArgs)

Dim model As GridModel = Me.gridDataBoundGrid1.Model

Dim ColIndex As Integer = Me.gridDataBoundGrid1.Model.NameToColIndex("CheckBox")

If e.RowIndex > 0 AndAlso e.ColIndex = ColIndex Then

e.Style.CellType = "CheckBox"

e.Style.HorizontalAlignment = GridHorizontalAlignment.Center

e.Style.VerticalAlignment = GridVerticalAlignment.Middle

e.Style.CellValueType = GetType(Boolean)

e.Style.CheckBoxOptions.CheckedValue = "True"

e.Style.CheckBoxOptions.UncheckedValue = "False"

e.Style.Enabled = True

Dim keyColIndex As Integer = model.NameToColIndex("Product_ID")

Dim key As String = model(e.RowIndex, keyColIndex).Text

If Not key Is Nothing Then

Dim value As Object = CheckBoxValues(key) 'Display the value in a cell by retrieving it from HashTable

If Not value Is Nothing Then

e.Style.CellValue = value

End If

End If

End If

End Sub

Private Sub Model_SaveCellInfo(ByVal sender As Object, ByVal e As GridSaveCellInfoEventArgs)

Dim model As GridModel = Me.gridDataBoundGrid1.Model

Dim ColIndex As Integer = Me.gridDataBoundGrid1.Model.NameToColIndex("CheckBox")

If e.RowIndex > 0 AndAlso e.ColIndex = ColIndex Then

Dim keyColIndex As Integer = model.NameToColIndex("Product_ID")

Dim key As String = model(e.RowIndex, keyColIndex).Text

If Not key Is Nothing Then

CheckBoxValues(key) = e.Style.CellValue 'Save the value in a HashTable

End If

End If

End Sub

Here is a sample that illustrates this:

http://help.syncfusion.com/support/samples/KB/Grid.Windows/UnboundCheckboxColumn/UnboundCheckBoxColumn.zip

Article ID: Published Date: Last Revised Date: Platform: Control:
648 04/30/2011 07/10/2014 Windows Forms GridDataBoundGrid(Classic)
Did you find this information helpful?
Add Comment
You must log in to leave a comment

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.