How to Add new row in Devexpress gridview, When we set DataSource from List<CITEM> objlst

2 min read 08-10-2024
How to Add new row in Devexpress gridview, When we set DataSource from List<CITEM> objlst


If you're working with DevExpress controls, particularly GridView, you might find yourself needing to dynamically add new rows to your grid. In this article, we'll discuss how to effectively achieve that when your DataSource is a list of objects, specifically List<CITEM> objlst.

Understanding the Scenario

In many applications, you often need to display data in a grid format. DevExpress GridView provides an intuitive way to represent and manipulate data. However, when you bind the GridView to a list (like List<CITEM>), adding new rows can sometimes be unclear.

Sample Code

Let's start with a sample code snippet that demonstrates how to bind a List<CITEM> to a DevExpress GridView and how to add a new row:

using System.Collections.Generic;
using DevExpress.XtraGrid.Views.Grid;

// Define the CITEM class
public class CITEM
{
    public int Id { get; set; }
    public string Name { get; set; }
}

// Sample method to set DataSource and add a row
private void SetupGridView()
{
    List<CITEM> objlst = new List<CITEM>
    {
        new CITEM { Id = 1, Name = "Item 1" },
        new CITEM { Id = 2, Name = "Item 2" }
    };

    // Set the DataSource for the GridView
    gridControl1.DataSource = objlst;

    // Add new row
    AddNewRow(objlst);
}

private void AddNewRow(List<CITEM> objlst)
{
    // Create a new instance of CITEM
    CITEM newItem = new CITEM { Id = 3, Name = "New Item" };

    // Add the new item to the list
    objlst.Add(newItem);

    // Refresh the grid to reflect changes
    gridControl1.RefreshDataSource();
}

Explanation of the Code

  1. Define the CITEM Class: First, we define a simple class called CITEM that contains two properties: Id and Name.

  2. Setting the DataSource: We create a list of CITEM objects and assign it to the DataSource property of GridControl. This populates the grid with the existing items in the list.

  3. Adding a New Row: The AddNewRow method creates a new instance of CITEM, adds it to the existing list, and finally refreshes the GridView to show the updated data.

Insights and Best Practices

  • Data Binding: When working with data-binding in DevExpress, it's essential to ensure that the list you're binding to implements INotifyPropertyChanged or BindingList<T> for automatic updates to the UI.

  • Performance Considerations: Depending on the size of your data set, consider implementing virtualization techniques, especially if dealing with a large number of records.

  • UI Feedback: Always provide feedback to users when adding new items. You could implement features such as success messages or highlighting the newly added row.

  • Error Handling: Ensure that you handle potential errors when adding items. For instance, check for duplicate entries or validate the data before adding it to the list.

Conclusion

Adding new rows to a DevExpress GridView bound to a List<CITEM> is straightforward once you understand the data-binding paradigm. By following the steps outlined above, you can dynamically manipulate the GridView and enhance the user experience.

Additional Resources

With the insights and strategies mentioned in this article, you should be able to effectively manage data in your DevExpress GridView applications. Happy coding!