I have a grid with three nested levels
the tables are as follows:
Forms
Form Sections
Form Items
You can have many sections within a form and many items within a form section. I am using a radwindow to edit and add items from this grid. In the command Item Template I have a Link buttons that allow me to enter new records, but i am having trouble getting the datakeyvalue when it comes to the add new buttons.
Heres my grid code:
And here is some of my code behind where I am trying to assign the rad window code to the buttons, the edit code works fine just not the add new buttons:
Any ideas what i am doing wrong in the RadGrid1_ItemCreated as the e.item.itemindex is -1 for the add new items.
the tables are as follows:
Forms
Form Sections
Form Items
You can have many sections within a form and many items within a form section. I am using a radwindow to edit and add items from this grid. In the command Item Template I have a Link buttons that allow me to enter new records, but i am having trouble getting the datakeyvalue when it comes to the add new buttons.
Heres my grid code:
<telerik:RadGrid ID="RadGrid1" DataSourceID="DSForms" runat="server" ShowStatusBar="true" AutoGenerateColumns="False" PageSize="30" AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" GridLines="None" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" OnDeleteCommand="RadGrid1_DeleteCommand"> <PagerStyle Mode="NumericPages"></PagerStyle> <MasterTableView DataSourceID="DSForms" DataKeyNames="Form_ID" AllowMultiColumnSorting="True" Width="100%" CommandItemDisplay="Top" CommandItemSettings-RefreshImageUrl="~/images/refresh.gif" CommandItemSettings-RefreshText="Refresh" CommandItemSettings-AddNewRecordText="Add Form" Name="Forms"> <DetailTables> <telerik:GridTableView DataKeyNames="FormSection_ID, Form_ID" DataSourceID="DSFormSections" Width="100%" runat="server" CommandItemDisplay="Top" Name="FormItems"> <CommandItemTemplate> <asp:HyperLink ID="AddSectionLink" runat="server" Text="Add Section"></asp:HyperLink> </CommandItemTemplate> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="Form_ID" MasterKeyField="Form_ID" /> </ParentTableRelation> <DetailTables> <telerik:GridTableView DataKeyNames="FormSection_ID,FormItem_ID" DataSourceID="DSFormItems" CommandItemDisplay="Top" Width="100%" runat="server"> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="FormSection_ID" MasterKeyField="FormSection_ID" /> </ParentTableRelation> <AlternatingItemStyle BackColor="LightCyan" /> <CommandItemTemplate> <asp:HyperLink ID="AddFormItemLink" runat="server" Text="Add Item"></asp:HyperLink> </CommandItemTemplate> <Columns> <telerik:GridBoundColumn SortExpression="FormItem_Question" HeaderText="Question" HeaderButtonType="TextButton" DataField="FormItem_Question" UniqueName="FormItem_Question"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="FormItem_QuestionValues" HeaderText="FormItem_QuestionValues" HeaderButtonType="TextButton" DataField="FormItem_QuestionValues" Visible="false" UniqueName="FormItem_QuestionValues"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="FormItem_Type" HeaderText="FormItem_Type" HeaderButtonType="TextButton" DataField="FormItem_Type" Visible="false" UniqueName="FormItem_Type"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="FormItem_Grid" HeaderText="FormItem_Grid" HeaderButtonType="TextButton" DataField="FormItem_Grid" Visible="false" UniqueName="FormItem_Grid"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ConfirmText="Delete this Form Item?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn2"> <HeaderStyle Width="20px" /> <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> </telerik:GridButtonColumn> <telerik:GridTemplateColumn UniqueName="TemplateEditColumn" ItemStyle-Width="20px"> <ItemTemplate> <asp:HyperLink ID="EditItemLink" runat="server"><img src="/images/edit.gif" alt="Edit" border="0" /></asp:HyperLink> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <SortExpressions> <telerik:GridSortExpression FieldName="FormItem_Sort" SortOrder="Descending"></telerik:GridSortExpression> </SortExpressions> </telerik:GridTableView> </DetailTables> <AlternatingItemStyle BackColor="AliceBlue" /> <Columns> <telerik:GridBoundColumn SortExpression="FormSection_ID" HeaderText="ID" HeaderButtonType="TextButton" DataField="FormSection_ID" UniqueName="FormSection_ID" ReadOnly="true" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn SortExpression="FormSection_Title" ReadOnly="true" HeaderText="Section" Visible="true" HeaderButtonType="TextButton" DataField="FormSection_Title" UniqueName="FormSection_Title"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ConfirmText="Delete this Form Section Item?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn2"> <HeaderStyle Width="20px" /> <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> </telerik:GridButtonColumn> <telerik:GridTemplateColumn UniqueName="TemplateEditColumn" ItemStyle-Width="20px"> <ItemTemplate> <asp:HyperLink ID="EditSectionLink" runat="server"><img src="/images/edit.gif" alt="Edit" border="0" /></asp:HyperLink> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <SortExpressions> <telerik:GridSortExpression FieldName="FormSection_Sort"></telerik:GridSortExpression> </SortExpressions> <EditFormSettings EditFormType="Template"> <FormTemplate> <table id="tblitems" cellspacing="2" cellpadding="1" width="100%" border="0" rules="none" style="border-collapse: collapse; background: white;"> <tr> <td> <table id="Table3" cellspacing="1" cellpadding="1" width="250" border="0" class="module"> <tr><td colspan="2"></td></tr> </table> </td> </tr> <tr> <td align="right"> <asp:Button ID="btnUpdate" Text='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "Insert", "Update") %>' runat="server" CommandName='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "PerformInsert", "Update")%>'> </asp:Button> <asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button> </td> </tr> </table> </FormTemplate> </EditFormSettings> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"><HeaderStyle Width="20px" /></telerik:GridEditCommandColumn> <telerik:GridBoundColumn SortExpression="Form_ID" HeaderText="Form_ID" ItemStyle-Width="30px" HeaderButtonType="TextButton" DataField="Form_ID" UniqueName="Form_ID" Visible="false" ReadOnly="true" /> <telerik:GridBoundColumn SortExpression="Form_Title" HeaderText="Form" ItemStyle-Width="300px" HeaderButtonType="TextButton" DataField="Form_Title" UniqueName="Form_Title" /> <telerik:GridButtonColumn ConfirmText="Delete this Form?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"><HeaderStyle Width="20px" /><ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /></telerik:GridButtonColumn> </Columns> <SortExpressions> <telerik:GridSortExpression FieldName="Form_Title" SortOrder="Descending"></telerik:GridSortExpression> </SortExpressions> <EditFormSettings EditFormType="Template"> <FormTemplate> <table id="Table2" cellspacing="2" cellpadding="1" width="100%" border="0" rules="none" style="border-collapse: collapse; background: white;"> <tr> <td> <table id="Table3" cellspacing="1" cellpadding="1" border="0"> <tr><td colspan="2"></td></tr> <tr> <td>Form Name: </td> <td><asp:TextBox ID="TextBox7" Width="350px" runat="server" Text='<%# Bind( "Form_Title" ) %>'></asp:TextBox></td> </tr> <tr><td colspan="2"></td></tr> </table> </td> </tr> <tr> <td align="right"> <asp:Button ID="btnUpdate" Text='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "Insert", "Update") %>' runat="server" CommandName='<%# IIf((TypeOf(Container) is GridEditFormInsertItem), "PerformInsert", "Update")%>'> </asp:Button> <asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button> </td> </tr> </table> </FormTemplate> </EditFormSettings> </MasterTableView> </telerik:RadGrid>And here is some of my code behind where I am trying to assign the rad window code to the buttons, the edit code works fine just not the add new buttons:
Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated If e.Item.OwnerTableView.DataSourceID = "DSFormSections" Then If TypeOf e.Item Is GridDataItem Then Dim EditSectionLink As HyperLink = DirectCast(e.Item.FindControl("EditSectionLink"), HyperLink) EditSectionLink.Attributes("href") = "#" EditSectionLink.Attributes("onclick") = [String].Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("FormSection_ID"), e.Item.ItemIndex) End If End If If e.Item.OwnerTableView.DataSourceID = "DSFormItems" Then If TypeOf e.Item Is GridDataItem Then Dim EditItemLink As HyperLink = DirectCast(e.Item.FindControl("EditItemLink"), HyperLink) EditItemLink.Attributes("href") = "#" EditItemLink.Attributes("onclick") = [String].Format("return ShowEditItemForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("FormItem_ID"), e.Item.ItemIndex) End If End If If e.Item.OwnerTableView.DataSourceID = "DSFormSections" Then If TypeOf e.Item Is GridCommandItem Then Dim AddSectionLink As HyperLink = DirectCast(e.Item.FindControl("AddSectionLink"), HyperLink) AddSectionLink.Attributes("href") = "#" AddSectionLink.Attributes("onclick") = "return ShowInsertForm();" End If End If If e.Item.OwnerTableView.DataSourceID = "DSFormItems" Then If TypeOf e.Item Is GridCommandItem Then Dim AddFormItemLink As HyperLink = DirectCast(e.Item.FindControl("AddFormItemLink"), HyperLink) AddFormItemLink.Attributes("href") = "#" AddFormItemLink.Attributes("onclick") = "return ShowInsertItemForm();" End If End IfEnd SubAny ideas what i am doing wrong in the RadGrid1_ItemCreated as the e.item.itemindex is -1 for the add new items.