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

[Solved] Disiplay Child-table column values when selected parent-table field

8 Answers 125 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Syed
Top achievements
Rank 1
Syed asked on 30 Jun 2009, 09:32 AM

Hi,

I have two tables, one is parent table(Division) and another is child table(Section) and i am able to show all the divisions and sections in combo box. But the problem is that child table is displaying all the column values for which i don't need. When ever the division id is selected, it should display the columns values of section_id belongs to division_id.

This is to be done when a record is inserted/updated.

<Columns>                
                      
               ------------------This is Parent Table Field--------------------------       
                    <telerik:GridDropDownColumn DataField="Divsion_ID" DataSourceID="SqlDataSource2" 
                        HeaderText="Division" ListTextField="Division_Name" ListValueField="Division_ID" DataType="System.Int32" 
                        UniqueName="UniqueDivisionName">  
                        </telerik:GridDropDownColumn>   
 
 
 ------------------------------This is Child Table Field--------------------------------------------------------------
<telerik:GridDropDownColumn DataField="Section_ID" DataSourceID="SqlDataSource3" 
                        HeaderText="Section" ListTextField="Section_Name" ListValueField="Section_ID" DataType="System.Int32" 
                        UniqueName="UniqueSectionName">  
                        </telerik:GridDropDownColumn>   
 
 
</Columns> 
 
 

Thanks.


Regards
Arshad

8 Answers, 1 is accepted

Sort by
0
Yavor
Telerik team
answered on 03 Jul 2009, 06:15 AM
Hi Syed,

Thank you for contacting us and for your question.
One possible option in this case would be to use a setup as shown in the following example.
Give this suggestion a try and let me know how it goes and if any other questions arise.

Kind regards,
Yavor
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Syed
Top achievements
Rank 1
answered on 13 Jul 2009, 11:23 PM
The given example was related to various grids. But my issue is related to GridDropDownColumn. I try it hard but only selecting the default value from my parent table. When i change the parent value from GridDropDownColumn, there is not postback in the child GridDropdownColumn.

Please have a look on my code:

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
<head runat="server"
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <br /> 
        <br /> 
        <div> 
            <telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="SqlDataSource1" GridLines="None" 
                Skin="Hay" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" enabled> 
                <MasterTableView AutoGenerateColumns="False" CellSpacing="-1" DataKeyNames="Division_ID" 
                    DataSourceID="SqlDataSource1" CommandItemDisplay="Top"
                    <Columns> 
                        <telerik:GridBoundColumn DataField="Resource_ID" DataType="System.Int64" HeaderText="Resource_ID" 
                            ReadOnly="True" SortExpression="Resource_ID" UniqueName="Resource_ID"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_Name" HeaderText="Resource_Name" SortExpression="Resource_Name" 
                            UniqueName="Resource_Name"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_Designation" HeaderText="Resource_Designation" 
                            SortExpression="Resource_Designation" UniqueName="Resource_Designation"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_EMail" HeaderText="Resource_EMail" SortExpression="Resource_EMail" 
                            UniqueName="Resource_EMail"
                        </telerik:GridBoundColumn> 
                        <telerik:GridDropDownColumn DataField="Division_ID" DataSourceID="SqlDataSource2" 
                            HeaderText="Division" ListTextField="Division_Name" ListValueField="Division_ID" 
                            DataType="System.Int32" UniqueName="UniqueDivisionName" AutoPostBackOnFilter="True" 
                             AllowFiltering="true"  > 
                        </telerik:GridDropDownColumn> 
                        <telerik:GridDropDownColumn DataField="Section_ID" DataSourceID="SqlDataSource3" 
                            HeaderText="Section" ListTextField="Section_Name" ListValueField="Section_ID" 
                            DataType="System.Int32" UniqueName="UniqueSectionName"
                        </telerik:GridDropDownColumn> 
                    </Columns> 
                </MasterTableView> 
            </telerik:RadGrid><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" 
                ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                DeleteCommand="DELETE FROM [Resource_Information] WHERE [Resource_ID] = @original_Resource_ID AND [Resource_Name] = @original_Resource_Name AND [Resource_Designation] = @original_Resource_Designation AND [Resource_EMail] = @original_Resource_EMail AND [Division_ID] = @original_Division_ID AND [Section_ID] = @original_Section_ID" 
                InsertCommand="INSERT INTO [Resource_Information] ([Resource_Name], [Resource_Designation], [Resource_EMail], [Division_ID], [Section_ID]) VALUES (@Resource_Name, @Resource_Designation, @Resource_EMail, @Division_ID, @Section_ID)" 
                OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Resource_ID], [Resource_Name], [Resource_Designation], [Resource_EMail], [Division_ID], [Section_ID] FROM [Resource_Information]" 
                UpdateCommand="UPDATE [Resource_Information] SET [Resource_Name] = @Resource_Name, [Resource_Designation] = @Resource_Designation, [Resource_EMail] = @Resource_EMail, [Division_ID] = @Division_ID, [Section_ID] = @Section_ID WHERE [Resource_ID] = @original_Resource_ID AND [Resource_Name] = @original_Resource_Name AND [Resource_Designation] = @original_Resource_Designation AND [Resource_EMail] = @original_Resource_EMail AND [Division_ID] = @original_Division_ID AND [Section_ID] = @original_Section_ID"
                <DeleteParameters> 
                    <asp:Parameter Name="original_Resource_ID" Type="Int64" /> 
                    <asp:Parameter Name="original_Resource_Name" Type="String" /> 
                    <asp:Parameter Name="original_Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="original_Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="original_Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Section_ID" Type="Int32" /> 
                </DeleteParameters> 
                <UpdateParameters> 
                    <asp:Parameter Name="Resource_Name" Type="String" /> 
                    <asp:Parameter Name="Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="Section_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Resource_ID" Type="Int64" /> 
                    <asp:Parameter Name="original_Resource_Name" Type="String" /> 
                    <asp:Parameter Name="original_Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="original_Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="original_Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Section_ID" Type="Int32" /> 
                </UpdateParameters> 
                <InsertParameters> 
                    <asp:Parameter Name="Resource_Name" Type="String" /> 
                    <asp:Parameter Name="Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="Section_ID" Type="Int32" /> 
                </InsertParameters> 
            </asp:SqlDataSource> 
            <br /> 
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                SelectCommand="SELECT [Division_ID], [Division_Name] FROM [NSS_Divisions]"></asp:SqlDataSource> 
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                SelectCommand="SELECT [Section_ID], [Section_Name] FROM [Division_Sections] where Divsion_ID=@Divsion_ID"
                <SelectParameters> 
                    <asp:ControlParameter ControlID="RadGrid1" DefaultValue="9001" PropertyName="SelectedValues['Division_ID']" 
                        Name="Divsion_ID" Type="Int32" /> 
                </SelectParameters> 
            </asp:SqlDataSource> 
        </div> 
    </form> 
</body> 
</html> 
 

Thanks.

Regards
Syed Arshad
0
Georgi Krustev
Telerik team
answered on 16 Jul 2009, 01:56 PM
Hello Syed,

In order to achieve your goal you will need to refer generated DropDownList in edit mode to the control parameter instead of the RadGrid1. I will suggest you wire the ItemCreated event and when the e.Item is GridEditableItem and e.Item.IsInEditMode you can get the id of the generated DropDownList and set the control parameter correctly for the SqlDataSource2.

Give this suggestion a try and let me know how it goes and if any other questions arise.

Kind regards,
Georgi Krustev
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Syed
Top achievements
Rank 1
answered on 18 Jul 2009, 10:25 PM
I try it but not working.  There is no event post back after selecting in parent combobox.

Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated 
        If TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode Then 
            Dim item As GridEditableItem = DirectCast(e.Item, GridEditableItem) 
            Dim c1 As RadComboBox = DirectCast(item("UniqueDivisionName").Controls(0), RadComboBox) 
            SqlDataSource3.SelectCommand = "select * from Division_Sections where divsion_id= '" & c1.SelectedValue & "'" 
SqlDatasource3.DataBind()
        End If 
    End Sub 

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
<head runat="server"
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <br /> 
        <br /> 
        <br /> 
        <div> 
            <telerik:RadGrid ID="RadGrid1" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" 
                AllowAutomaticUpdates="True" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" 
                DataSourceID="SqlDataSource1" GridLines="None" Skin="Sunset"
                <MasterTableView AutoGenerateColumns="False" CellSpacing="-1" CommandItemDisplay="Top" 
                    DataKeyNames="Resource_ID" DataSourceID="SqlDataSource1"
                    <RowIndicatorColumn> 
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn> 
                        <HeaderStyle Width="20px" /> 
                    </ExpandCollapseColumn> 
                    <Columns> 
                        <telerik:GridBoundColumn DataField="Resource_ID" DataType="System.Int64" HeaderText="Resource_ID" 
                            ReadOnly="True" SortExpression="Resource_ID" UniqueName="Resource_ID"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_Name" HeaderText="Resource_Name" SortExpression="Resource_Name" 
                            UniqueName="Resource_Name"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_Designation" HeaderText="Resource_Designation" 
                            SortExpression="Resource_Designation" UniqueName="Resource_Designation"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="Resource_EMail" HeaderText="Resource_EMail" SortExpression="Resource_EMail" 
                            UniqueName="Resource_EMail"
                        </telerik:GridBoundColumn> 
                        <telerik:GridDropDownColumn DataField="Division_ID" DataSourceID="SqlDataSource2" 
                        HeaderText="Division" ListTextField="Division_Name" ListValueField="Division_ID" 
                        DataType="System.Int32" UniqueName="UniqueDivisionName"
                    </telerik:GridDropDownColumn> 
                    <telerik:GridDropDownColumn DataField="Section_ID" DataSourceID="SqlDataSource3" 
                        HeaderText="Section" ListTextField="Section_Name" ListValueField="Section_ID" 
                        DataType="System.Int32" UniqueName="UniqueSectionName"
                    </telerik:GridDropDownColumn> 
                    </Columns> 
                </MasterTableView> 
            </telerik:RadGrid><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" 
                ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                DeleteCommand="DELETE FROM [Resource_Information] WHERE [Resource_ID] = @original_Resource_ID AND [Resource_Name] = @original_Resource_Name AND [Resource_Designation] = @original_Resource_Designation AND [Resource_EMail] = @original_Resource_EMail AND [Division_ID] = @original_Division_ID AND [Section_ID] = @original_Section_ID" 
                InsertCommand="INSERT INTO [Resource_Information] ([Resource_Name], [Resource_Designation], [Resource_EMail], [Division_ID], [Section_ID]) VALUES (@Resource_Name, @Resource_Designation, @Resource_EMail, @Division_ID, @Section_ID)" 
                OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Resource_ID], [Resource_Name], [Resource_Designation], [Resource_EMail], [Division_ID], [Section_ID] FROM [Resource_Information]" 
                UpdateCommand="UPDATE [Resource_Information] SET [Resource_Name] = @Resource_Name, [Resource_Designation] = @Resource_Designation, [Resource_EMail] = @Resource_EMail, [Division_ID] = @Division_ID, [Section_ID] = @Section_ID WHERE [Resource_ID] = @original_Resource_ID AND [Resource_Name] = @original_Resource_Name AND [Resource_Designation] = @original_Resource_Designation AND [Resource_EMail] = @original_Resource_EMail AND [Division_ID] = @original_Division_ID AND [Section_ID] = @original_Section_ID"
                <DeleteParameters> 
                    <asp:Parameter Name="original_Resource_ID" Type="Int64" /> 
                    <asp:Parameter Name="original_Resource_Name" Type="String" /> 
                    <asp:Parameter Name="original_Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="original_Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="original_Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Section_ID" Type="Int32" /> 
                </DeleteParameters> 
                <UpdateParameters> 
                    <asp:Parameter Name="Resource_Name" Type="String" /> 
                    <asp:Parameter Name="Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="Section_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Resource_ID" Type="Int64" /> 
                    <asp:Parameter Name="original_Resource_Name" Type="String" /> 
                    <asp:Parameter Name="original_Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="original_Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="original_Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="original_Section_ID" Type="Int32" /> 
                </UpdateParameters> 
                <InsertParameters> 
                    <asp:Parameter Name="Resource_Name" Type="String" /> 
                    <asp:Parameter Name="Resource_Designation" Type="String" /> 
                    <asp:Parameter Name="Resource_EMail" Type="String" /> 
                    <asp:Parameter Name="Division_ID" Type="Int32" /> 
                    <asp:Parameter Name="Section_ID" Type="Int32" /> 
                </InsertParameters> 
            </asp:SqlDataSource> 
            <br /> 
            &nbsp;<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Division_ID], [Division_Name] FROM [NSS_Divisions] where Division_Name not like 'ALL'"
            </asp:SqlDataSource> 
            <asp:DropDownList ID="DropDownList1" runat="server"
            </asp:DropDownList> 
            <br /> 
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ResourceUtilizationDBConnectionString %>" 
                OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Section_ID], [Section_Name] FROM [Division_Sections]"
            </asp:SqlDataSource> 
        </div> 
    </form> 
</body> 
</html> 
 




0
Georgi Krustev
Telerik team
answered on 21 Jul 2009, 03:56 PM
Hello Syed,

You can allow post back with setting AutoPostBack of DropDownList to true.
Protected Sub RadGrid1_ItemCreated(ByVal sender As ObjectByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated  
        If TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode Then  
            Dim item As GridEditableItem = DirectCast(e.Item, GridEditableItem)  
            Dim c1 As RadComboBox = DirectCast(item("UniqueDivisionName").Controls(0), RadComboBox) 
        c1.AutoPostBack = true 
            SqlDataSource3.SelectCommand = "select * from Division_Sections where divsion_id= '" & c1.SelectedValue & "'"  
        End If  
    End Sub  

Could you please try not calling SqlDataSource3.DataBind() in ItemCreated event handler. If RadComboBox is not bound, you can call SqlDataSource3.DataBind() in ItemDataBound event handler.

Sincerely yours,
Georgi Krustev
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Syed
Top achievements
Rank 1
answered on 21 Jul 2009, 11:51 PM
I try it but nothing works. I could not able to see any list of items in Child RadCombo.

Now postback events works but no items in the child combo box.

Thanks.

Regards
Arshad
0
Peter
Top achievements
Rank 1
answered on 24 Jul 2009, 11:12 AM
Hi,

Why don't you try call the same code in the ItemDataBound event handler, instead of ItemCreated.

Greetings,
Petar
0
Syed
Top achievements
Rank 1
answered on 24 Jul 2009, 03:46 PM
Hi Petar,

I try with itemcreated,itemdatabound and itemcommand, still no result.

when  i use itemdatabound, the post back event fires for the first time only when you press edit button.

Thanks.

Regards
Arshad 
Tags
Grid
Asked by
Syed
Top achievements
Rank 1
Answers by
Yavor
Telerik team
Syed
Top achievements
Rank 1
Georgi Krustev
Telerik team
Peter
Top achievements
Rank 1
Share this question
or