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

What event do I need to use to insert child records in a grid?

2 Answers 71 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Tim
Top achievements
Rank 1
Tim asked on 07 Jul 2011, 12:20 PM
As a follow up to the earlier question beneath, I'm trying to write some code to assign contacts to facilities.

http://www.telerik.com/community/forums/aspnet-ajax/grid/how-to-reference-parent-data-items-in-edititemtemplate.aspx

I'm following samples such as the one beneath but I'm unable to find the correct event that I need to use. I'm currently trying to use 'RadGrid1_InsertCommand' but I imagine that's not working because it's the event that would be used for inserting the parent 'Facilities'.

http://www.telerik.com/community/code-library/aspnet-ajax/grid/automatic-operations-in-hierarchical-grid-with-sqldatasource-control.aspx

Can someone tell me what event I need to be looking at?

Thanks,
Tim


Protected Sub RadGrid1_InsertCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs)
 
    'This event is not firing when I click on the 'Insert' link. What event do I need to use instead?
 
    Dim insertedItem As GridEditFormInsertItem = DirectCast(e.Item, GridEditFormInsertItem)
 
    Dim parentItem As GridDataItem = e.Item.OwnerTableView.ParentItem
    Dim datakey As String = parentItem.OwnerTableView.DataKeyValues(parentItem.ItemIndex)("FacilityID").ToString()
    Dim contactId As Integer = (TryCast(insertedItem("colContactId").Controls(0), DropDownList)).SelectedValue
 
    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
 
    Try
        conn.Open()
 
        Dim insertQuery As String = "INSERT into FacilityContacts(FacilityId, ContactID) values('" & datakey & "','" & contactId & "')"
        Dim cmd As New SqlCommand(insertQuery, conn)
        cmd.ExecuteNonQuery()
        conn.Close()
 
    Catch ex As Exception
        RadGrid1.Controls.Add(New LiteralControl("Unable to insert contact. Reason: " + ex.Message))
        e.Canceled = True
    Finally
    End Try
 
 
End Sub

<telerik:RadGrid ID="RadGrid1" ShowStatusBar="True" DataSourceID="dsFacilityList"
    runat="server" PageSize="7" AllowSorting="True" AllowPaging="True" GridLines="None"
    CellSpacing="0" AllowAutomaticInserts="True"
    AllowAutomaticUpdates="True" >
    <PagerStyle Mode="NumericPages"></PagerStyle>
    <MasterTableView DataSourceID="dsFacilityList" AllowMultiColumnSorting="True"
        PageSize="20" CommandItemDisplay="Top" DataKeyNames="FacilityID" EditMode="EditForms" >
        <EditItemTemplate>
 
        </EditItemTemplate>
        <DetailTables>
            <telerik:GridTableView runat="server" DataKeyNames="FacilityID"
                DataSourceID="dsFacilityContactList" CommandItemDisplay="Top"
                AutoGenerateColumns="False" AllowAutomaticDeletes="True"
                AllowAutomaticInserts="False">                   
                 
                <EditItemTemplate>
               
                </EditItemTemplate>
                 
                <ParentTableRelation>
                    <telerik:GridRelationFields DetailKeyField="FacilityID"
                        MasterKeyField="FacilityID" />
                </ParentTableRelation>
                <CommandItemSettings ExportToPdfText="Export to PDF" />
                <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
                    <HeaderStyle Width="20px" />
                </RowIndicatorColumn>
                <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
                    <HeaderStyle Width="20px" />
                </ExpandCollapseColumn>
                <Columns>
                    <telerik:GridTemplateColumn DataField="ContactID"
                        FilterControlAltText="Filter column column" UniqueName="colContactId" EditFormHeaderTextFormat="">
                        <EditItemTemplate>
                               Select Contact:
                                    <asp:DropDownList ID="cboContactID" runat="server">
                                   </asp:DropDownList>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="ContactIDLabel" runat="server" Text='<%# Eval("ContactLongDesc") %>'></asp:Label>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
 
                </Columns>
                <EditFormSettings>
                    <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                    </EditColumn>
                </EditFormSettings>
            </telerik:GridTableView>
        </DetailTables>
        <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
        <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
        </RowIndicatorColumn>
        <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"
            Visible="True">
        </ExpandCollapseColumn>
        <SortExpressions>
 
        </SortExpressions>
        <EditFormSettings>
            <EditColumn FilterControlAltText="Filter EditCommandColumn column">
            </EditColumn>
        </EditFormSettings>
     
    </MasterTableView>
 
    <FilterMenu EnableImageSprites="False">
    </FilterMenu>
    <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
    </HeaderContextMenu>
</telerik:RadGrid>

2 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 07 Jul 2011, 12:39 PM
Hello Tim,

InsertCommand will fire if you have enabled AllowAutomaticInserts as false.

aspx:
<telerik:RadGrid runat="server" ID="RadGrid2" AutoGenerateColumns="False" AllowAutomaticInserts="false"  AutoGenerateEditColumn="true">
</telerik:RadGrid>

Also check the following help documentation which explains more about this.
Automatic DataSource operations.

Thanks,
Princy.
0
Tim
Top achievements
Rank 1
answered on 07 Jul 2011, 02:34 PM
Hi Princy,

Thanks for replying.

This turned out to be schoolboy error on my part. I forgot to add the 'Handles' bit of RadGrid1_InsertCommand and adding this back in solved my problem.  

Protected Sub RadGrid1_InsertCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.InsertCommand

Tim
Tags
Grid
Asked by
Tim
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Tim
Top achievements
Rank 1
Share this question
or