Building a DataGrid Helper Control for ASP.NET 1.x: Part 3
page 2 of 6
by Li Chen
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 32530/ 56

Enhancing the DataGridHelper Control to Support Custom Columns

[Download Code]

Let us first examine how the DataGridHelper control extracts user input from a bound column:

BoundColumn bc = (_dataGrid.Columns[i] as BoundColumn);
if (bc != null)
{
 name = bc.DataField;
if (bc.ReadOnly)
 {
  val = e.Item.Cells[i].Text;
 }
 else
 {
  val = ((TextBox)e.Item.Cells[i].Controls[0]).Text;
 }
 col[name] = val;
}

The code contains the knowledge of the BoundColumn because we know how it works. However, we cannot expect the DataGridHelper control to have the knowledge all existing custom columns and all future custom columns; we cannot keep changing the code of DataGridHelper to add the knowledge of new custom columns. Thus our first step is to define an interface for DataGridHelper and custom columns to work together:

public interface IDataGridColumn
{
 void GetValues(TableCell cell, Hashtable col);
}

All custom columns designed to work with DataGridHelper control must implement this interface. The interface has a single method called GetValues. The DataGridHelper will pass a TableCell object and a Hashtable object to the custom column. The custom column class is responsible for extracting the input from the TableCell and adds the field/value pair to the Hashtable. This design can work with custom columns that contain more than one input control. For example, a phone number column could have a control for the area code and another control for the phone number; a zip code column could have a control for the zip code and another control for the zip extension. Since the custom columns are responsible for extracting the inputs, we only need to add the following code in the _dataGrid_UpdateCommand function of DataGridHelper to support custom columns:

IDataGridColumn ic = _dataGrid.Columns[i] as IDataGridColumn;
if (ic != null)
{
 ic.GetValues(e.Item.Cells[i], col);
}

That is it. It is so simple! Next, we will introduce two custom DataGrid columns that implement IDataGridColumn interface.


View Entire Article

User Comments

Title: how to insert   
Name: eyal
Date: 2005-06-09 4:02:12 AM
Comment:
i wont to insert to grid in a way that the colomn will open in a visual stae in the grid mach like the edit command if you can help me
thenks
Title: Building a DataGrid Helper Control for ASP.NET 1.x: Part 3   
Name: greg
Date: 2005-04-30 12:07:57 PM
Comment:
he control is very cool.
I have a question regarding the DataGridHelper control:
1. why do we need a DataGridHelperconnector component? the web component is disappeared in asp.net 2.0

2. can we set the properties dataAdapter, datagrid to browsable instead of using the connector? so that we can set these properties at design time.

I'm lokking forward to your answer, Thanks
Title: Re: Small bug   
Name: Li Chen
Date: 2004-12-22 12:12:44 PM
Comment:
I would like to thank Robert for pointing out the bug in part 2 of the article. The bug was discovered during the writing of the part 3 of this series and fixed. Readers are urged to use the code from part 3.
Title: Small bug   
Name: Robert Storrs
Date: 2004-12-01 2:34:39 PM
Comment:
Great Article. One of the best I have read in some time.

I did find a small bug and added the following line as line 134 in the DataGridHelperConnector.cs (in version 2)

134 if(_dataGridHelper.DataGrid != _dataGrid)
_dataGridHelper.DataGrid = _dataGrid;

Without this check, the program creates two event handlers for the SortCommand. This results in the new sort order always being DESC. It also caused multiple reloading of the grid.
Title: Everybody speaks C#   
Name: Shain
Date: 2004-09-14 9:06:50 PM
Comment:
Any computer science program should know the basics of languages similiar to Java, C++, C, or the like. It is not very hard to convert C# code to VB code and since this article really explores Data Structures & Algorithms approaches it is pretty easy to convert. You should study this article, and if you need VB, try to write the code yourself. There is probably an advantage to having this as C# code -- although the CLR may not care.
Title: love it   
Name: ben
Date: 2004-09-14 7:09:11 AM
Comment:
love it
Title: Building a DataGrid Helper Control for ASP.NET 1.x: Part 3   
Name: Peter Ho
Date: 2004-09-12 12:29:05 AM
Comment:
A great series of articles, Mr. Chen. Thanks!
Title: Building a DataGrid Helper Control for ASP.NET 1.x: Part 3   
Name: T. freeman
Date: 2004-08-16 11:07:09 AM
Comment:
Excellent article - well written, good detail. Thanks!
Title: Building a DataGrid Helper Control for ASP.NET 1.x: Part 3   
Name: Li Chen
Date: 2004-07-20 12:53:03 PM
Comment:
Sam,

The download does include the VB version of the DataGridHelperTest project.

Li
Title: Building a DataGrid Helper Control for ASP.NET 1.x: Part 3   
Name: Sam Richardson
Date: 2004-07-20 9:27:49 AM
Comment:
It would be even better if there was some vb.net code to go with it - not everyone speaks C#.

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-25 5:11:49 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search