When in unbound mode of RadGridView does not use a data source to generate its content. In this mode, you need to add/remove the grid columns and rows using the
provided API or the RadGridView user interface (in design-time). You can also have a spreadsheet-like grid with empty rows and columns, letting the user enter own
data. This topic described the three possible scenarios for creating unbound grids:
- Creating empty grids with RowCount property set to the number of desired rows
- Creating grids and filling them with data, using the Cells collection
- Creating grids and filling them with data, using the Rows collection
Creating Empty Grid
You can create a grid with empty rows and columns and let the user fill the data. You should add columns to the Columns collection of the corresponding
GridViewTemplate (or RadGridView in cases of flat grid). Then you should set the RowCount property to the number of desired
rows. The grid does take into account the number of the rows that are already set (as described further in this topic). If you have explicitly set 5 rows and set
RowCount to 10, RadGridView will add 5 more empty rows so that the total number will be 10.
The following code demonstrates how to create a grid with two columns and ten rows:
| [C#] Creating empty grid |
Copy Code |
|
private void Form1_Load(object sender, EventArgs e)
{
this.radGridView1.RowCount = 10;
this.radGridView1.Columns.Add(new GridViewDataColumn("A"));
this.radGridView1.Columns.Add(new GridViewDataColumn("B"));
this.radGridView1.MasterGridViewTemplate.AllowAddNewRow = false;
}
|
| [VB] Creating empty grid |
Copy Code |
|
Private Sub Form1_Load(ByVal sender As
Object, ByVal e As EventArgs)
Me.radGridView1.RowCount = 10
Me.radGridView1.Columns.Add(New GridViewDataColumn("A"))
Me.radGridView1.Columns.Add(New GridViewDataColumn("B"))
Me.radGridView1.MasterGridViewTemplate.AllowAddNewRow = False
End Sub
|
The result from the code above is on the screenshot below:

Adding rows programmatically (through Cells collection)
In this scenario, you should add the data for each cell in the row, specifying the cell index or the column name. Note that you should first create the columns:
| [C#] Adding data through Cells collection |
Copy Code |
|
private void Form1_Load(object sender, EventArgs e)
{ this.radGridView1.Columns.Add(new GridViewDataColumn("A")); this.radGridView1.Columns.Add(new GridViewDataColumn("B"));
GridViewRowInfo rowInfo = this.radGridView1.Rows.AddNew();
rowInfo.Cells[0].Value = "A1";
rowInfo.Cells[1].Value = "B1";
rowInfo = this.radGridView1.Rows.AddNew();
rowInfo.Cells["A"].Value = "A2";
rowInfo.Cells["B"].Value = "B2";
}
|
| [VB] Adding data through Cells collection |
Copy Code |
|
Private Sub Form1_Load(ByVal sender As
Object, ByVal e As EventArgs)
Me.radGridView1.Columns.Add(New GridViewDataColumn("A"))
Me.radGridView1.Columns.Add(New GridViewDataColumn("B"))
Dim rowInfo As GridViewRowInfo = Me.radGridView1.Rows.AddNew()
rowInfo.Cells(0).Value = "A1"
rowInfo.Cells(1).Value = "B1"
rowInfo = Me.radGridView1.Rows.AddNew()
rowInfo.Cells("A").Value = "A2"
rowInfo.Cells("B").Value = "B2"
End Sub
|
The code above results in the following grid:

Adding rows programmatically (through Rows collection)
You can have the same result as the picture above by adding the rows data using the Add method of the Rows collection:
| [C#] Adding data through Rows collection |
Copy Code |
|
private void Form1_Load(object sender, EventArgs e)
{ this.radGridView1.Columns.Add(new GridViewDataColumn("A")); this.radGridView1.Columns.Add(new GridViewDataColumn("B"));
this.radGridView1.Rows.Add("A1","B1");
this.radGridView1.Rows.Add("A2","B2");
}
|
| [VB] Adding data through Rows collection |
Copy Code |
|
Private Sub Form1_Load(ByVal sender As
Object, ByVal e As EventArgs)
Me.radGridView1.Columns.Add(New GridViewDataColumn("A"))
Me.radGridView1.Columns.Add(New GridViewDataColumn("B"))
Me.radGridView1.Rows.Add("A1","B1")
Me.radGridView1.Rows.Add("A2","B2")
End Sub
|
Setting the hierarchical grid in unbound mode
Setting the hierarchical grid in unbound mode is quite similar to that for the bound mode with only difference is setting the unbound mode itself. First of all you need to
create and the columns you need. After that set up the relation and finally load the data.
| [C#] Setting the hierarchical grid in unbound mode |
Copy Code |
|
//setup the master template GridViewImageColumn column = new
GridViewImageColumn("Photo");
column.ImageLayout = ImageLayout.Stretch;
radGridView1.MasterGridViewTemplate.Columns.Add(column);
GridViewTextBoxColumn textColumn = new GridViewTextBoxColumn("Name");
textColumn.Width = 150;
radGridView1.MasterGridViewTemplate.Columns.Add(textColumn);
radGridView1.MasterGridViewTemplate.Columns.Add(new GridViewDecimalColumn("Salary"));
GridViewDateTimeColumn dateTimeColumn = new GridViewDateTimeColumn("Hire
Date");
dateTimeColumn.Width = 100;
dateTimeColumn.TextAlignment = ContentAlignment.MiddleCenter;
radGridView1.MasterGridViewTemplate.Columns.Add(dateTimeColumn);
textColumn = new GridViewTextBoxColumn("Title");
textColumn.Width = 150;
radGridView1.MasterGridViewTemplate.Columns.Add(textColumn);
radGridView1.MasterGridViewTemplate.Columns.Add(new GridViewCheckBoxColumn("Active"));
radGridView1.MasterGridViewTemplate.Columns.Add(new GridViewCommandColumn("Action")); //setup the child template GridViewTemplate template = new GridViewTemplate(); template.AllowAddNewRow = true; template.Columns.Add(new GridViewTextBoxColumn("Name")); template.Columns.Add(new GridViewTextBoxColumn("Product Number")); template.Columns.Add(new GridViewDecimalColumn("Quantity")); template.Columns.Add(new GridViewDecimalColumn("Discount")); template.Columns.Add(new GridViewDecimalColumn("Total"));
radGridView1.MasterGridViewTemplate.ChildGridViewTemplates.Add(template); //create the relation GridViewRelation relation = new GridViewRelation(radGridView1.MasterGridViewTemplate);
relation.ChildTemplate = template;
relation.RelationName = "EmployeesOrders";
relation.ParentColumnNames.Add("Name");
relation.ChildColumnNames.Add("Name");
radGridView1.Relations.Add(relation); //load data LoadUnboundData();
private void LoadUnboundData()
{ for (int i = 0; i <
nwindDataSet.Employees.Count; i++)
{
Random random = new Random((int)DateTime.Now.Ticks);
Telerik.Examples.WinControls.DataSources.NorthwindDataSet.EmployeesRow row = nwindDataSet.Employees[i];
string name = row.FirstName + " " +
row.LastName;
radGridView1.MasterGridViewTemplate.Rows.Add(GetImageFromBytes(row.Photo), name, random.Next(45000),
row.HireDate, row.Title, (random.Next(100) > 50), "View");
GridViewTemplate template = radGridView1.MasterGridViewTemplate.ChildGridViewTemplates[0];
int rowCount = random.Next(20);
for (int j = 0; j < rowCount; j++)
{
template.Rows.Add(name, random.Next(1000), random.Next(50), random.Next(100),
random.Next(10000));
}
}
}
|
| [VB] Setting the hierarchical grid in unbound mode |
Copy Code |
|
Dim column As GridViewImageColumn = New
GridViewImageColumn("Photo")
column.ImageLayout = ImageLayout.Stretch
radGridView1.MasterGridViewTemplate.Columns.Add(column)
Dim textColumn As GridViewTextBoxColumn = New
GridViewTextBoxColumn("Name")
textColumn.Width = 150
radGridView1.MasterGridViewTemplate.Columns.Add(textColumn)
radGridView1.MasterGridViewTemplate.Columns.Add(New GridViewDecimalColumn("Salary"))
Dim dateTimeColumn As GridViewDateTimeColumn = New
GridViewDateTimeColumn("Hire Date")
dateTimeColumn.Width = 100
dateTimeColumn.TextAlignment = ContentAlignment.MiddleCenter
radGridView1.MasterGridViewTemplate.Columns.Add(dateTimeColumn)
textColumn = New GridViewTextBoxColumn("Title")
textColumn.Width = 150
radGridView1.MasterGridViewTemplate.Columns.Add(textColumn)
radGridView1.MasterGridViewTemplate.Columns.Add(New GridViewCheckBoxColumn("Active"))
radGridView1.MasterGridViewTemplate.Columns.Add(New GridViewCommandColumn("Action"))
Dim template As GridViewTemplate = New GridViewTemplate
template.AllowAddNewRow = true
template.Columns.Add(New GridViewTextBoxColumn("Name"))
template.Columns.Add(New GridViewTextBoxColumn("Product Number"))
template.Columns.Add(New GridViewDecimalColumn("Quantity"))
template.Columns.Add(New GridViewDecimalColumn("Discount"))
template.Columns.Add(New GridViewDecimalColumn("Total"))
radGridView1.MasterGridViewTemplate.ChildGridViewTemplates.Add(template)
Dim relation As GridViewRelation = New
GridViewRelation(radGridView1.MasterGridViewTemplate)
relation.ChildTemplate = template
relation.RelationName = "EmployeesOrders"
relation.ParentColumnNames.Add("Name")
relation.ChildColumnNames.Add("Name")
radGridView1.Relations.Add(relation)
LoadUnboundData
Private Sub LoadUnboundData()
Dim i As Integer =
0
Do While (i <
nwindDataSet.Employees.Count)
Dim random As Random =
New Random(CType(DateTime.Now.Ticks,Integer))
Dim row As
Telerik.Examples.WinControls.DataSources.NorthwindDataSet.EmployeesRow = nwindDataSet.Employees(i)
Dim name As String = (row.FirstName + (" " + row.LastName))
radGridView1.MasterGridViewTemplate.Rows.Add(GetImageFromBytes(row.Photo), name,
random.Next(45000), row.HireDate, row.Title, (random.Next(100) > 50), "View")
Dim template As
GridViewTemplate = radGridView1.MasterGridViewTemplate.ChildGridViewTemplates(0)
Dim rowCount As
Integer = random.Next(20)
Dim j As Integer = 0
Do While (j <
rowCount)
template.Rows.Add(name, random.Next(1000), random.Next(50), random.Next(100), random.Next(10000))
j = (j + 1)
Loop
i = (i + 1)
Loop
End Sub
|