Hi All,
I Have a nested gridview with HierarchyLoadMode="Server Binding" (think an Purchase Order / Lines).
Within the Lines grid view I have a link button in a template column:
<telerik:GridTemplateColumn UniqueName="PO_Num" HeaderText="PO #" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" SortExpression="PO_Num">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbPO" CommandArgument='<%#Eval("PO_Num").ToString() %>' OnClick="lbPO_Click" Text='<%#Eval("PO_Num").ToString()%>' ToolTip="View invoices for this PO." />
</ItemTemplate>
</telerik:GridTemplateColumn>
When this button is clicked it pulls data and binds it to a completely separate grid.
My issue is with the loading panel. When the link button first becomes visible, if I click on the link button the loading panel will not show, even though I'm dynamically adding the control to the rad ajax manager (I've tried on both the pre_render and ItemDataBound events). The button still works as though it's ajaxed, but it's not being fired though the OnRequestStart. If another control that is also ajaxed gets fired (say a dropdownlist on the page), the link button will then work as expected . . . going through the OnRequestStart and showing the loading panel.
Looking for suggestions / work arounds.
My Parent Grid databinding to the child grid:
protected
void
rgPurchaseOrder_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.ExpandCollapseCommandName)
{
GridDataItem parentItem = e.Item
as
GridDataItem;
RadGrid rgLines = parentItem.ChildItem.FindControl(
"rgLines"
)
as
RadGrid;
if
(!e.Item.Expanded)
{
rgLines.Visible =
true
;
rgLines.Rebind();
if
(parentItem.ItemType == GridItemType.AlternatingItem)
//e7ffe5
parentItem.ChildItem.BackColor = System.Drawing.Color.FromArgb(231, 255, 229);
}
else
{
rgLines.Visible =
false
;
}
rgLines.MasterTableView.Rebind();
}
}
My Lines PreRender . . .
protected
void
rgLines_PreRender(
object
sender, EventArgs e)
{
foreach
(GridNestedViewItem item
in
rgPurchaseOrder.MasterTableView.GetItems(GridItemType.NestedView))
{
GridDataItem grandParentItem = (GridDataItem)item.ParentItem;
RadGrid rgLines = grandParentItem.ChildItem.FindControl(
"rgLines"
)
as
RadGrid;
if
(rgLines!=
null
)
{
foreach
(GridDataItem childItem
in
rgLines.MasterTableView.Items)
{
LinkButton btn = (LinkButton)childItem[
"PO"
].FindControl(
"lbPO"
);
RadAjaxManager.GetCurrent(
this
.Page).AjaxSettings.AddAjaxSetting(btn, pnlInvoices, RadAjaxLoadingPanel2);
}
}
}
}
aspx (just showing generic layout).
<radgrid ID = "rgPurchaseOrder">
<master table view>
<columns>
</Columns>
<NestedViewTemplate>
<radgrid ID="rgLines" >
</radgrid>
</master table view>
</radgrid>
<asp:panel id="pnlInvoices">
<radGrid id="rgInvoices">
</radGrid>
</asp:panel>