In the sample, the unbound column values are stored in a hashtable using CustomerID as the lookup key. So, when you enter the unbound value in the AddNew row without adding a CUstomerID value, there is no key for the hashtable, so the value does not get saved.
I think you can use CurrentCellStartEditing to add a new row directly to the DataTable. Normally, if you have a primary key column, calling DataTable.NewRow would populate the primary key for you. But the NorthWind database does not auto populate customerID, so you would either do it yourself, or not let the user leave the row (RowLeave event) until he provided the value.
Here is code that worked for me in the sample. It populates the customerID column. One other thing for this NorthWind Database is the CustomerName has a non-empty constraint on it. So, to avoid this constraint exception, the code puts a blank into that field as well.
private int id = 0;
private void gridDataBoundGrid1_CurrentCellStartEditing(object sender, CancelEventArgs e)
{
GridDataBoundGrid grid = (GridDataBoundGrid) sender;
GridCurrentCell cc = grid.CurrentCell;
if(cc.RowIndex == grid.Model.RowCount && grid[0, cc.ColIndex].Text == "Unbound")
{
DataRow dr = this.dataSet11.Customers.NewRow();
dr[dataSet11.Customers.CustomerIDColumn.ColumnName] = string.Format("custID{0}", id++);
dr[dataSet11.Customers.CompanyNameColumn.ColumnName] = "";
dataSet11.Customers.Rows.Add(dr);
}
}