New Article: Extending the DataGrid using CodeDom

A new article that I wrote is published on the MSDN Belux site. It's about how to extend the DataGrid in the Windows.Forms namespace by adding a custom DataGridColumnStyle to it. Just creating the ColumnStyle is not that difficult, but when you want full design-time support for that column (e.g. listing it in the dropdown when adding ColumnStyles to a TableStyle), things get a little bit complicated. This article shows how to accomplish this and illustrates it with an example. The example is the ExtendedDataGrid that has a new ColumnStyle; the DataGridObjectColumn. This column can be used to evaluate expressions entered at design-time and displaying the results in the DataGrid. For example it's possible to have a column in your grid that evaluates price * (vat/100)without having to add another property to your collection or a calculated column to the your DataSet. The trick is to compile the expression that is stored as a string, using CodeDom. This technique is explained as well in the article.

Summary: The System.Windows.Forms DataGrid has several limitations, but is very extensible. This article shows how to create a custom DataGridColumnStyle that evaluates expressions for each row, stored in a string value, at run-time. This can be useful if the DataGrid shows rows that have properties that are objects themselves, or to add calculated fields. To obtain this behavior, an ExpressionEngine is built which can compile and execute code at run-time. To ensure ease-of-use and provide full design-time support for the custom DataGridColumnStyle, a custom DataGrid, based on the standard DataGrid is built too.

My thanks go to Tom, who managed to put the article online while attending the PDC! Btw, he's got an excellent coverage of this event on his blog.

2 Comments

  • I am very new at ASP.NET this look as if its what I need to complete my assignment. But I dont know how to trigger it below is my problem.



    My purpose is to dynamically change all the text description on all the objects

    and all the DIM that contain Error messages by read a DB table to determine the

    language by user name and then read a DB table by ASP page and language to get all the

    objects that needs to be changes.



    Can I email you my code?







  • Hi


    G'night

Comments have been disabled for this content.