Introduction
I have frequently come across the requirement where values from a gridview need to be extracted. The code here is a generic one that extracts the cell values in a given row and returns the collection.
Using the Code
The code is given below:
public IDictionary<string, object> GetValues(GridViewRow row)
{
IOrderedDictionary dictionary = new OrderedDictionary();
foreach (Control control in row.Controls)
{
DataControlFieldCell cell = control as DataControlFieldCell;
if ((cell != null) && cell.Visible)
{
cell.ContainingField.ExtractValuesFromCell
(dictionary, cell, row.RowState, true);
}
}
IDictionary<string, object> values = new Dictionary<string, object>();
foreach (DictionaryEntry de in dictionary)
{
values[de.Key.ToString()] = de.Value;
}
return values;
}
The values returned can be accessed in the following way:
GridViewRow row = GridView1.Rows[e.RowIndex];
var m_values = this.GetValues(row);
string userid = m_values["UserID"].ToString();
where the string value is the Column name in the GridView.
The above code might not work properly in case of cells having UserControls. For all other cases whether it be a bound field or template field, the code would work.
History
- 21st January, 2010: Initial post