Please anyone help me on how to do this..
I can't find any method in the UltraGrid that accomplished this.
It's not absolutely necessary to implement IBindingList. But IBindingList is a much more robust interface for DataBinding than IList.
When using IList, the grid will not receive a notification when values in the data change, rows are added, or deleted, etc. But if you are displaying a static list of data that will not change, then IList is fine. You can also call grid.Rows.Refresh(ReloadData) to manually simulate the missing notifications and update the grid any time something changes.
fyi - as Vince pointed out - if you are binding a list of custom objects, the list must implement IBindingList. I had code that failed to perform that step, instead just binding an IList of my custom objects, and added rows failed to appear in the grid. By passing my IList into the IBindingList constructor, the problem was solved.
It's important to emphasize that WinGrid is entirely a databound control. If you don't have a data source set to the grid, you can't add rows to it. Attempting to call the band's AddNew() method will throw an exception if the grid isn't bound (or if the grid is bound to something that doesn't implement IBindingList).
If you want to use WinGrid without using a DataSet or custom business object, bind it to a WinDataSource and add your rows there.
grid.DisplayLayout.Bands[0].AddNew();
In case you're using binding, I think it's better to add objects to the data source and refresh the grid.