Hi! I'm new to ASP and the web in general so bear with me.
I need to add multiple footer rows to my RadGrid instance ; for the moment, however, I just want to add second one. I have currently a single footer row and it's working and displaying perfectly, for the record.
I found the following relevant question on these forums and tried implemeting it but it's not working : the code gets executed, and the new FooterItem gets added to the Controls but that second row just doesn't appear. I need to find out why and I'd be grateful if anyone could help me fix that problem.
ASP grid code
Relevant code behind
Of course if you need more precisions, just ask. Thank you for your help.
I need to add multiple footer rows to my RadGrid instance ; for the moment, however, I just want to add second one. I have currently a single footer row and it's working and displaying perfectly, for the record.
I found the following relevant question on these forums and tried implemeting it but it's not working : the code gets executed, and the new FooterItem gets added to the Controls but that second row just doesn't appear. I need to find out why and I'd be grateful if anyone could help me fix that problem.
ASP grid code
<
div
id
=
"OrderMainContent"
>
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
/>
<
telerik:AjaxSetting
AjaxControlID
=
"txtQuantity"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadInputManager
ID
=
"RadInputManager1"
runat
=
"server"
>
<
telerik:NumericTextBoxSetting
BehaviorID
=
"NumericBehavior1"
Type
=
"Number"
DecimalDigits
=
"0"
>
<
TargetControls
>
<
telerik:TargetInput
ControlID
=
"RadGrid1"
/>
</
TargetControls
>
</
telerik:NumericTextBoxSetting
>
</
telerik:RadInputManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
Skin
=
"Sunset"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
ShowFooter
=
"True"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
OnPreRender
=
"RadGrid1_PreRender"
>
<
MasterTableView
DataKeyNames
=
"ProductID"
TableLayout
=
"Fixed"
>
<
RowIndicatorColumn
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"colProduct"
HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblProduct %>"
HeaderStyle-HorizontalAlign="Center" DataField="ProdDesc">
<
HeaderStyle
HorizontalAlign
=
"Center"
></
HeaderStyle
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"colQuantity"
HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblQuantity %>"
HeaderStyle-HorizontalAlign="Center" DataField="OrderQty" ColumnEditorID="txtQuantity">
<
HeaderStyle
Width
=
"90"
/>
<
ItemStyle
Width
=
"90px"
/>
<
ItemTemplate
>
<
asp:TextBox
ID
=
"txtQuantity"
runat
=
"server"
Width
=
"50px"
OnTextChanged
=
"txtQuantity_TextChanged"
AutoPostBack
=
"true"
>
</
asp:TextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"colPrice"
HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblBasePrice %>"
HeaderStyle-HorizontalAlign="Center" DataField="ProdUnitPrice">
<
HeaderStyle
Width
=
"80px"
/>
<
ItemStyle
Width
=
"80px"
/>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblPrice"
runat
=
"server"
Text='<%# Eval("ProdUnitPrice") %>' />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"colNotes"
HeaderText="<%$ Resources: SiteLabels, ProductOrderForm.lblNotes %>"
HeaderStyle-HorizontalAlign="Center">
<
HeaderStyle
Width
=
"200px"
/>
<
ItemStyle
Width
=
"200px"
/>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
</
div
>
Relevant code behind
protected
void
RadGrid1_PreRender(
object
sender, EventArgs e)
{
AddFooterRow(sender
as
RadGrid);
}
private
void
AddFooterRow(RadGrid grid)
{
if
(grid !=
null
)
{
GridItem[] footerItems = grid.MasterTableView.GetItems(GridItemType.Footer);
if
(footerItems.Count() == 1)
{
GridTFoot foot = footerItems[0].Parent.Controls[0].Parent
as
GridTFoot;
for
(
int
i = 0; i < foot.Controls.Count; i++)
{
GridFooterItem item = foot.Controls[i]
as
GridFooterItem;
if
(item !=
null
)
{
lastFooterPos = i;
break
;
}
}
GridFooterItem existingFooter = foot.Controls[lastFooterPos]
as
GridFooterItem;
GridFooterItem newFooterItem =
new
GridFooterItem(grid.MasterTableView, 0, 0);
foreach
(TableCell fc
in
existingFooter.Cells)
{
TableCell newFooterCell =
new
TableCell();
newFooterCell.Text =
"allo"
;
newFooterItem.Cells.Add(newFooterCell);
}
foot.Controls.AddAt(lastFooterPos + 1, newFooterItem);
}
}
}
Of course if you need more precisions, just ask. Thank you for your help.