Hi Telerik,
This isn't a question (unless you see ways to improve the class). Just giving a little back for all the help you guys have passed my way in the last year.
The class below allows a button to be placed in the Group Header cells of a grouped GridView and be able to subscribe to the button's clickevent. The event args pass back the GridViewGroupRowInfo. I'm using it to be able to identify and manipulate only the data rows associated with the particular group in question.
Hope some finds it useful
Regards
Ian
The Event args look like this although more could be added as needed I imagine
This isn't a question (unless you see ways to improve the class). Just giving a little back for all the help you guys have passed my way in the last year.
The class below allows a button to be placed in the Group Header cells of a grouped GridView and be able to subscribe to the button's clickevent. The event args pass back the GridViewGroupRowInfo. I'm using it to be able to identify and manipulate only the data rows associated with the particular group in question.
Hope some finds it useful
Regards
Ian
{
public
delegate
void
GroupHeaderCellButtonClickEventHandler(
object
sender, GroupHeaderButtonClickEventArgs e);
public
partial
class
CustomGridView : RadGridView
{
public
event
GroupHeaderCellButtonClickEventHandler GroupHeaderCellButtonClick;
public
CustomGridView()
{
InitializeComponent();
base
.CreateCell +=
new
GridViewCreateCellEventHandler(CustomGridView_CreateCell);
}
void
CustomGridView_CreateCell(
object
sender, GridViewCreateCellEventArgs e)
{
if
(e.CellType ==
typeof
(GridGroupContentCellElement) && e.Row.GetType() ==
typeof
(GridGroupHeaderRowElement))
{
e.CellElement =
new
RadCustomGroupContentCell(e.Column, e.Row);
RadCustomGroupContentCell cellElement = (RadCustomGroupContentCell)e.CellElement;
cellElement.InternalGroupHeaderCellButtonClick+=
new
GroupHeaderCellButtonClickEventHandler(cellElement_InternalGroupHeaderCellButtonClick);
}
}
void
cellElement_InternalGroupHeaderCellButtonClick(
object
sender, GroupHeaderButtonClickEventArgs e)
{
if
(GroupHeaderCellButtonClick !=
null
)
{
GroupHeaderCellButtonClick(sender, e);
}
}
public
override
string
ThemeClassName
{
get
{
return
typeof
(RadGridView).FullName;
}
set
{ }
}
protected
internal
class
RadCustomGroupContentCell : GridGroupContentCellElement
{
public
event
GroupHeaderCellButtonClickEventHandler InternalGroupHeaderCellButtonClick;
RadButtonElement theButton;
public
RadCustomGroupContentCell(GridViewColumn column, GridRowElement row)
:
base
(column, row)
{
}
protected
override
void
DisposeManagedResources()
{
theButton.Click -=
new
EventHandler(theButton_Click);
base
.DisposeManagedResources();
}
void
theButton_Click(
object
sender, EventArgs e)
{
InternalGroupHeaderCellButtonClick(sender,
new
GroupHeaderButtonClickEventArgs((GridViewGroupRowInfo)
this
.RowInfo));
}
protected
override
void
CreateChildElements()
{
base
.CreateChildElements();
theButton =
new
RadButtonElement();
theButton.Click +=
new
EventHandler(theButton_Click);
theButton.Text =
"Insert"
;
theButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
theButton.Image = Resources.InsertRow16;
this
.Children.Add(theButton);
}
protected
override
SizeF ArrangeOverride(SizeF finalSize)
{
SizeF size =
base
.ArrangeOverride(finalSize);
float
buttonX =2;
float
buttonY = 4;
RectangleF buttonRectangle =
new
RectangleF(buttonX, buttonY, theButton.DesiredSize.Width + 4, theButton.DesiredSize.Height + 2);
theButton.Arrange(buttonRectangle);
float
buttonAndTextX = theButton.DesiredSize.Width + 4;
RectangleF clientRect =
new
RectangleF(buttonAndTextX + buttonX, 0, finalSize.Width - buttonAndTextX - buttonX, finalSize.Height + 4);
this
.layoutManagerPart.Arrange(clientRect);
return
size;
}
protected
override
Type ThemeEffectiveType
{
get
{
return
typeof
(GridGroupContentCellElement);
}
set
{ }
}
}
}
}
The Event args look like this although more could be added as needed I imagine
public
class
GroupHeaderButtonClickEventArgs:EventArgs
{
public
GridViewGroupRowInfo GroupRowInfo
{
get
;
set
; }
public
GroupHeaderButtonClickEventArgs(GridViewGroupRowInfo groupRowInfo)
{
this
.GroupRowInfo = groupRowInfo;
}
}