This is a migrated thread and some comments may be shown as answers.

[Solved] data from nested grid into dataset

1 Answer 184 Views
Grid
This is a migrated thread and some comments may be shown as answers.
TSCGlobal
Top achievements
Rank 1
TSCGlobal asked on 08 Feb 2010, 04:47 PM
I am updating an order form using the RadGrid nesting feature, but I'm having trouble getting the data from the nested grid and inserting it into a dataset so I can further process the order, inserting it into the database.  I keep the "not set to an instance of an object" null reference error. Specifically, when I try to initiate the row count for the data in the nested grid in the codebehind.  Here's the relevant aspx code;

<telerik:RadGrid ID="rgPogList" runat="server" DataSourceID="dsListPogs" GridLines="None" AllowPaging="True">  
 
    <MasterTableView AutoGenerateColumns="False" DataKeyNames="StoreNum,POGID" DataSourceID="dsListPogs">  
        <RowIndicatorColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
        </RowIndicatorColumn> 
 
        <ExpandCollapseColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
        </ExpandCollapseColumn> 
        <Columns> 
            <telerik:GridBoundColumn DataField="StoreNum" HeaderText="StoreNum"   
                ReadOnly="True" SortExpression="StoreNum" UniqueName="StoreNum" Visible="false">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="RetailerID" DataType="System.Int32"   
                HeaderText="RetailerID" SortExpression="RetailerID" UniqueName="RetailerID" Visible="false">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="POGID" HeaderText="POGID" ReadOnly="True"   
                SortExpression="POGID" UniqueName="POGID">  
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="Description" HeaderText="Description"   
                SortExpression="Description" UniqueName="Description">  
            </telerik:GridBoundColumn> 
        </Columns> 
          
            <NestedViewSettings DataSourceID="SqlDataSource2">  
                <ParentTableRelation> 
                    <telerik:GridRelationFields MasterKeyField="POGID" DetailKeyField="POGID" /> 
                </ParentTableRelation> 
            </NestedViewSettings> 
            <NestedViewTemplate> 
                <asp:GridView ID="rgOrderDetail" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" 
                        Width="100%" Font-Size="Small" ForeColor="Black">  
                    <Columns> 
                        <asp:TemplateField HeaderText="RowNum" SortExpression="RowNum">  
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtRowNum" runat="server" Text='<%# Bind("RowNum") %>'></asp:TextBox> 
                            </EditItemTemplate> 
                              
                            <ItemTemplate> 
                                <asp:Label ID="lblRowNum" runat="server" Text='<%# Bind("RowNum") %>'></asp:Label> 
                            </ItemTemplate> 
                              
                            <ItemStyle Font-Bold="False" /> 
                        </asp:TemplateField> 
                          
                        <asp:TemplateField HeaderText="LineNum" SortExpression="LineNum">  
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtLineNum" runat="server" Text='<%# Bind("LineNum") %>'></asp:TextBox> 
                            </EditItemTemplate> 
                              
                            <ItemTemplate> 
                                <asp:Label ID="lblLineNum" runat="server" Text='<%# Bind("LineNum") %>'></asp:Label> 
                            </ItemTemplate> 
                              
                            <ItemStyle Font-Bold="False" /> 
                        </asp:TemplateField> 
                          
                        <asp:TemplateField HeaderText="ItemNum" SortExpression="ItemNum">  
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtItemNum" runat="server" Text='<%# Bind("ItemNum") %>'></asp:TextBox> 
                            </EditItemTemplate> 
                          
                            <ItemTemplate> 
                                <asp:Label ID="lblItemNum" runat="server" Text='<%# Bind("ItemNum") %>'></asp:Label> 
                            </ItemTemplate> 
                          
                            <ItemStyle Font-Bold="False" /> 
                        </asp:TemplateField> 
                          
                        <asp:TemplateField HeaderText="UPC" SortExpression="UPC">  
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtUPC" runat="server" Text='<%# Bind("UPC") %>'></asp:TextBox> 
                            </EditItemTemplate> 
                              
                            <ItemTemplate> 
                                <asp:Label ID="lblUPC" runat="server" Text='<%# Bind("UPC") %>'></asp:Label> 
                            </ItemTemplate> 
                              
                            <ItemStyle Font-Bold="False" /> 
                        </asp:TemplateField> 
                          
                        <asp:TemplateField HeaderText="Par" SortExpression="Par">  
                            <EditItemTemplate> 
                                <asp:TextBox ID="txtPar" runat="server" Text='<%# Bind("Par") %>'></asp:TextBox> 
                            </EditItemTemplate> 
                              
                            <ItemTemplate> 
                                <asp:Label ID="lblPar" runat="server" Text='<%# Bind("Par") %>'></asp:Label> 
                            </ItemTemplate> 
                              
                            <ItemStyle Font-Bold="False" /> 
                        </asp:TemplateField> 
                          
                        <asp:TemplateField HeaderText="ItemDesc" SortExpression="ItemDesc">  
                                    <EditItemTemplate> 
                                        <asp:TextBox ID="txtItemDesc" runat="server" Text='<%# Bind("ItemDesc") %>'></asp:TextBox> 
                                    </EditItemTemplate> 
                                    <ItemTemplate> 
                                        <asp:Label ID="lblItemDesc" runat="server" Text='<%# Bind("ItemDesc") %>'></asp:Label> 
                                    </ItemTemplate> 
                                    <ItemStyle Font-Bold="False" /> 
                                </asp:TemplateField> 
                        <asp:TemplateField HeaderText="Quantity">  
                            <ItemTemplate> 
                                <asp:TextBox ID="txtQuantity" runat="server" Width="0.5in">0</asp:TextBox>&nbsp;  
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtQuantity" 
                                        ErrorMessage="Amount can not be blank">  
                                    </asp:RequiredFieldValidator> 
                                    <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtQuantity" 
                                        ErrorMessage="Amount must be a number" MaximumValue="2000" MinimumValue="0" SetFocusOnError="True" 
                                        Type="Integer">  
                                    </asp:RangeValidator> 
                            </ItemTemplate> 
                            <ItemStyle Width="3.9in" Wrap="False" /> 
                        </asp:TemplateField> 
                    </Columns> 
                </asp:GridView><br /><br /> 
                  
                <asp:Button ID="btnClear" runat="server" Text="Clear" /> 
                <asp:Button ID="btnReviewOrder" runat="server" Text="Submit" OnCommand="ReviewOrder" /> 
 
            </NestedViewTemplate> 
              
    </MasterTableView> 
    <HierarchySettings ExpandTooltip="Expand to see items in POG" /> 
</telerik:RadGrid> 
And here is the codebehind:

   Private Sub ReviewOrder()  
 
        'Dim intRow As Integer  
        Dim Quantity As Integer 
        Dim Row As GridViewRow  
        Dim DS As New DataSet  
        Dim DR As DataRow  
        Dim RowCount As Integer 
        Dim rgOrderDetail As GridView = Me.FindControl("rgOrderDetail")  
 
        'Create data set for order form  
        DS.Tables.Add("tblReviewOrder")  
        DS.Tables(0).Columns.Add("RowNum", Type.GetType("System.String"))  
        DS.Tables(0).Columns.Add("LineNum", Type.GetType("System.String"))  
        DS.Tables(0).Columns.Add("ItemNum", Type.GetType("System.String"))  
        DS.Tables(0).Columns.Add("UPC", Type.GetType("System.String"))  
        DS.Tables(0).Columns.Add("Par", Type.GetType("System.Int32"))  
        DS.Tables(0).Columns.Add("ItemDesc", Type.GetType("System.String"))  
        DS.Tables(0).Columns.Add("Quantity", Type.GetType("System.Int32"))  
        DS.Tables(0).Columns.Add("Messages", Type.GetType("System.String")) '???  
 
        'Counts the item rows in the gridview currently open  
        RowCount = rgOrderDetail.Rows.Count - 1  
        Dim blnChecked As Boolean = False '????  
 
        'Populates the data set from the order created  
        For intRow = 0 To RowCount  
            Row = rgOrderDetail.Rows(intRow)  
            Quantity = DirectCast(Row.FindControl("txtQuantity"), TextBox).Text().Trim()  
 
            If Quantity > 0 Then 
                DR = DS.Tables(0).NewRow()  
 
                DR("RowNum") = CType(rgOrderDetail.Rows(intRow).FindControl("lblRowNum"), Label).Text  
                DR("LineNum") = CType(rgOrderDetail.Rows(intRow).FindControl("lblLineNum"), Label).Text  
                DR("ItemNum") = CType(rgOrderDetail.Rows(intRow).FindControl("lblItemNum"), Label).Text  
                DR("UPC") = CType(rgOrderDetail.Rows(intRow).FindControl("lblUPC"), Label).Text  
                DR("Par") = CType(rgOrderDetail.Rows(intRow).FindControl("lblPar"), Label).Text  
                DR("ItemDesc") = CType(rgOrderDetail.Rows(intRow).FindControl("lblItemDesc"), Label).Text  
                DR("Quantity") = CType(rgOrderDetail.Rows(intRow).FindControl("txtQuantity"), TextBox).Text().Trim()  
                If CType(rgOrderDetail.Rows(intRow).FindControl("txtQuantity"), TextBox).Text().Trim() > (CType(rgOrderDetail.Rows(intRow).FindControl("lblPar"), Label).Text) Then 
                    DR("Messages") = "Quantity entered is greater than the Par amount." 
                Else 
                    DR("Messages") = "" 
                End If 
                DS.Tables(0).Rows.Add(DR)  
            End If 
        Next 
 
        rgReview.DataSource = (DS)  
        rgReview.DataBind()  
 
        If RowCount > 0 Then 
            OrderPanel.Visible = False 
            ReviewPanel.Visible = True 
        Else 
            OrderPanel.Visible = True 
            ReviewPanel.Visible = False 
        End If 
 
    End Sub 
I am hoping a second set of eyes will help me resolve this.  Basically, I will eventually take the dataset and creating a new order that will then be inserted into a database.

1 Answer, 1 is accepted

Sort by
0
Accepted
Shinu
Top achievements
Rank 2
answered on 09 Feb 2010, 12:46 PM
Hi,

From your aspx I have noticed that  you are setting the source to DataSourceControl. If so you will need to use the Automatic Operations of the grid.You can refer to the code library link below:
Automatic operations in hierarchical grid with SqlDataSource control

Thanks,
Shinu
Tags
Grid
Asked by
TSCGlobal
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Share this question
or