![]() |
Web Development »
ASP.NET Controls »
Grid Controls
Intermediate
License: The Code Project Open License (CPOL)
GridView with Edit Form (Template)By Lukas HolotaComfort editing of a GridView row. |
C#, Javascript, CSS, HTML, ASP.NET, ADO.NET, Ajax, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
When I got my new job, I found out that developers there were still thinking in .NET 1.1, so they used old methods or directly edited HTML in Render methods. One of the controls made in this terrible way was a GridView that used an edit form instead of a classic edit row, and I wanted to make it the new (and I hope, also the right) way.
Let's start designing:
ITemplate (bindable) of the edit formThe control itself is not complicated, so I will not describe all the code, I'll mention only the interesting parts.
IBindableTemplate and used it as the property.[PersistenceMode(PersistenceMode.InnerProperty),
TemplateContainer(typeof(GridViewRow),
System.ComponentModel.BindingDirection.TwoWay)]
public IBindableTemplate EditItemTemplate
{
set { _EditItemTemplate = value; }
get { return _EditItemTemplate; }
}
The interesting thing about this snippet is the attribute. Ordinary ITemplates provide only one way, so we can not extract the inserted values back, that's why I used the IBindableTemplate and declared two way binding direction in the attribute.
protected override void ExtractRowValues(
System.Collections.Specialized.IOrderedDictionary fieldValues,
GridViewRow row, bool includeReadOnlyFields, bool includePrimaryKey)
{
if (_EnableTemplateEditing)
{
// Not working
// fieldValues = _EditItemTemplate.ExtractValues(row.Cells[0]);
// Working
IOrderedDictionary dict = _EditItemTemplate.ExtractValues(row.Cells[0]);
foreach (string s in dict.Keys)
fieldValues.Add(s, dict[s]);
}
else
base.ExtractRowValues(fieldValues, row, includeReadOnlyFields,
includePrimaryKey);
}
The strange thing is that you can not assign the IOrderedDictionary you get from the template to the fieldValues object even if fieldValues is empty. You have to add the values key by key, as shown.
To enable template editing, don't forget to set the EnableTemplateEditing property to true.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 12 Feb 2008 Editor: Smitha Vijayan |
Copyright 2008 by Lukas Holota Everything else Copyright © CodeProject, 1999-2009 Web21 | Advertise on the Code Project |