I have a nested grid, something like this.
On the click of a button, I wanted to save (by getting drop down list in the parent item and that in the child items of the grid).
Here is the code to get controls from the grid.
The values from the master table gets fine, but when it comes to parse the child table, although it get controls fine (lblProductID and lblBundleOrderItemID), but their text propery are empty for some reason. This is also weird that I can see if there are seven bundle items (nested table rows), some of these rows returns good values, but others return empty rows. which is really weird.
Yes, I confirm that ProductID and BundleOrderItemID have values (other than empty string). Of course they do as they are sort of primary keys.
I also tried this from the main loop (instead of GridTableView), but I got the same situation. I can see values displaying on the grid, but I dont get them when I parse via above code.
Any idea? what I might be doing wrong?
thanks,
Sameers
<telerik:RadGrid ID="grdItems" runat="server" GridLines="None" Width="100%"> |
<ExportSettings> |
<Pdf PageWidth="8.5in" PageHeight="11in" PageTopMargin="" PageBottomMargin="" PageLeftMargin="" |
PageRightMargin="" PageHeaderMargin="" PageFooterMargin=""></Pdf> |
</ExportSettings> |
<MasterTableView DataMember="Master" AutoGenerateColumns="False" HierarchyDefaultExpanded="true" |
ExpandCollapseColumn-CollapseImageUrl="~/images/trans.gif"> |
<RowIndicatorColumn Visible="False"> |
<HeaderStyle Width="20px"></HeaderStyle> |
</RowIndicatorColumn> |
<ExpandCollapseColumn Visible="False" Resizable="False"> |
<HeaderStyle Width="20px"></HeaderStyle> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridBoundColumn UniqueName="ID" DataField="ID" Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridTemplateColumn HeaderText="Package"> |
<ItemTemplate> |
<asp:DropDownList ID="ddlPackage" runat="server"> |
</asp:DropDownList> |
<asp:Label ID="lblOrderItemId" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="SKU"> |
<ItemTemplate> |
<asp:HyperLink ID="hypProductID" runat="Server" Text='<%# Eval("ProductId") %>' |
NavigateUrl='<%# "~/Inventory/Product.aspx?id=" & eval("ProductId") %>'></asp:HyperLink> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Reference"> |
<ItemTemplate> |
<asp:HyperLink runat="Server" ID="hypeBayItemID" Target="_blank" Text='<%#Eval("eBayItemID")%>'></asp:HyperLink> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Original Reference" Visible="false"> |
<ItemTemplate> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Item"> |
<ItemTemplate> |
<%#Eval("DisplayName")%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Unit Price" Visible="false"> |
<ItemTemplate> |
<%#FormatCurrency(Eval("AdjustedSitePrice"), 2)%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Qty"> |
<ItemTemplate> |
<%#Eval("Qty")%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Subtotal" Visible="false"> |
<ItemTemplate> |
<%#FormatCurrency( Eval("Qty") * Eval("AdjustedSitePrice"), 2)%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Notes" UniqueName="Notes"> |
<ItemTemplate> |
<%#Eval("Notes")%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="" Visible="false"> |
<ItemTemplate> |
<asp:HyperLink ToolTip="Drop Shipped" ID="hypDroppedShipped" ImageUrl="~/images/dropShipped.jpg" |
runat="server" NavigateUrl='<%# "Orders_DropShip.aspx?id=" & Eval("OrderID") %>'></asp:HyperLink> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
<DetailTables> |
<telerik:GridTableView runat="server" DataMember="ChildProducts" AutoGenerateColumns="False" |
HierarchyDefaultExpanded="true" ExpandCollapseColumn-CollapseImageUrl="~/images/trans.gif" |
Width="100%"> |
<Columns> |
<telerik:GridBoundColumn UniqueName="OrderItemId" DataField="OrderItemId" Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="ID" DataField="ID" Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridTemplateColumn HeaderText="Package"> |
<ItemTemplate> |
<asp:DropDownList ID="ddlPackage" runat="server"> |
</asp:DropDownList> |
<asp:Label ID="lblBundleOrderItemId" runat="server" Visible="true"></asp:Label> |
<asp:Label ID="lblProductID" runat="server" Text='<%# Eval("ProductID") %>' Visible="false"></asp:Label> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="SKU"> |
<ItemTemplate> |
<asp:HyperLink ID="hypProductID" runat="Server" Text='<%# Eval("ProductId") %>' |
NavigateUrl='<%# "~/Inventory/Product.aspx?id=" & eval("ProductId") %>'></asp:HyperLink> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Item"> |
<ItemTemplate> |
<asp:Label ID="lblPRoductName" runat="Server"></asp:Label> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridTemplateColumn HeaderText="Qty"> |
<ItemTemplate> |
<%#Eval("Qty")%> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
</Columns> |
</telerik:GridTableView> |
</DetailTables> |
</MasterTableView> |
</telerik:RadGrid> |
On the click of a button, I wanted to save (by getting drop down list in the parent item and that in the child items of the grid).
Here is the code to get controls from the grid.
Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnSave.Click |
For Each item As Telerik.Web.UI.GridDataItem In Me.grdItems.Items |
Dim lblOrderItemId As Label = CType(item.FindControl("lblOrderItemId"), Label) |
Dim ddlPackage As DropDownList = CType(item.FindControl("ddlPackage"), DropDownList) |
If lblOrderItemId IsNot Nothing Then |
'Its main order item |
Dim oi As Orders.OrderItem = OrderServices.OrderItems.GetByID(CInt(lblOrderItemId.Text)) |
oi.PackageID = ddlPackage.SelectedValue |
OrderServices.OrderItems.Update(oi) |
'Parse child items |
Dim grdTable As GridTableView = CType(CType(item.ChildItem, GridNestedViewItem).Cells(1).Controls(0), GridTableView) |
For Each childItem As Telerik.Web.UI.GridDataItem In grdTable.Items |
Dim lblBundleOrderItemId As Label = CType(childItem.FindControl("lblBundleOrderItemId"), Label) |
Dim lblProductID As Label = CType(childItem.FindControl("lblProductID"), Label) |
ddlPackage = CType(childItem.FindControl("ddlPackage"), DropDownList) |
Next |
'ElseIf lblBundleOrderItemId IsNot Nothing And lblOrderItemId Is Nothing Then |
' 'Its bundle item |
End If |
Next |
Session("PackagesMessage") = "Order Shipping Preferences saved." |
Response.Redirect(Request.Url.PathAndQuery) |
End Sub |
The values from the master table gets fine, but when it comes to parse the child table, although it get controls fine (lblProductID and lblBundleOrderItemID), but their text propery are empty for some reason. This is also weird that I can see if there are seven bundle items (nested table rows), some of these rows returns good values, but others return empty rows. which is really weird.
Yes, I confirm that ProductID and BundleOrderItemID have values (other than empty string). Of course they do as they are sort of primary keys.
I also tried this from the main loop (instead of GridTableView), but I got the same situation. I can see values displaying on the grid, but I dont get them when I parse via above code.
Any idea? what I might be doing wrong?
thanks,
Sameers