Problems with controlparameters using GridDropDownColumns in RadGrid

2 posts, 0 answers
  1. Dana Cobb
    Dana Cobb avatar
    46 posts
    Member since:
    Mar 2007

    Posted 18 Jan 2012 Link to this post

    I have a Radgrid which displays  a recordset with a lot of foreign key relations returned. Most of the values are the IDs of the rows, so I want to display the related descriptions from the lookup tables. To this I am using several GridDropDownColumns.
    All of them work correctly with their respective sqldatasource bindings except the one that is dependent on another GridDropDownColumn. It seems that if I use the first dropdown as a <asp:controlpatameter... for the sqldatasource of the second dropdown ...then the Page Load cannot find the first dropdown.
    Here is the sqldatasource for the second dropdown:

    <asp:SqlDataSource ID="ds_DemoValues" runat="server" ConnectionString="<%$ ConnectionStrings:CFSubsConn %>"<br><br>SelectCommand="SELECT [ID], [QuestionID], [Value] FROM [v_DemoValues] WHERE ([QuestionID] = @QuestionID) UNION SELECT Null AS ID, '' as QuestionID, 'Select a Value' AS [Value]"><br><br><SelectParameters> <br><br><asp:controlparameter name="QuestionID" controlid="ddl_ParentControlID" propertyname="SelectedValue"/> <br><br></SelectParameters><br><br></asp:SqlDataSource>
    The error on PageLoad is:

    Could not find control 'ddl_ParentControlID' in ControlParameter 'QuestionID'.

    The RadGrid code is as follows:
    <telerik:RadGrid ID="RadGrid1" AutoGenerateColumns="False" runat="server" Width=750px DataSourceID="ds_Validation" GridLines="None"
    Skin="Outlook"  AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowAutomaticDeletes="True">
     <MasterTableView DataKeyNames="OtherValidationID" DataSourceID="ds_Validation" CommandItemDisplay="Top">
        <EditFormSettings EditFormType="Template">
    <FormTemplate>
    <table id="Table2" cellspacing="2" cellpadding="1" width="100%" border="1" rules="none" style="border-collapse: collapse; background: white;">
    <tr class="EditFormHeader">
        <td style="font-size: small"><b>Validation Control Parameters</b></td></tr>
    <tr> <td>
               <table id="Table3" cellspacing="1" cellpadding="1" width="250" border="0" class="module">
                      <tr><td></td><td></td></tr>
                      <tr>
                         <td>ID:</td>
                         <td><asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind( "OTHERVALIDATIONID" ) %>'  enabled="False"></asp:TextBox></td>
                       </tr>                                                      
                       <tr>
                           <td>ParentControlID:</td>
                           <td><asp:DropDownList ID="ddl_ParentControlID" AutoPostBack="True" OnSelectedIndexChanged="setDemoValues" runat="server" SelectedValue='<%# Bind("PARENTCONTROLID") %>' DataSourceID="ds_DemoQuestions" DataValueField="ID" DataTextField="Question"><asp:ListItem Value="" Text="Select an Question">Select an Question</asp:ListItem></asp:DropDownList></td>
                       </tr>
                       <tr>
                           <td>ParentControlType:</td>
                           <td><asp:DropDownList ID="ddl_ParentControlType" runat="server" SelectedValue='<%# Bind("PARENTCONTROLTYPE") %>' DataSourceID="ds_ControlTypes" DataValueField="VALUE" DataTextField="DESCRIPTION"></asp:DropDownList></td>
                         </tr>
                         <tr>
                            <td>DetailID:</td>
                         <td><asp:DropDownList ID="ddl_DemoID" DataSourceID = "ds_DemoValues" runat="server" DataValueField="ID" DataTextField="Value" SelectedValue='<%# Bind("DetailID") %>' ><asp:ListItem Value="" Text="Select a Value">Select a Value</asp:ListItem></asp:DropDownList>
                          </td>
                     </tr>
                     <tr>
                          <td>ChildControlID:</td>
                          <td><asp:DropDownList ID="ddl_ChildParentID" runat="server" SelectedValue='<%# Bind("CHILDCONTROLID") %>' DataSourceID="ds_DemoQuestions" DataValueField="ID" DataTextField="Question">
                                                                            <asp:ListItem Value="" Text="Select an Question">Select an Question</asp:ListItem></asp:DropDownList></td>
                      </tr>
                      <tr>
                           <td>ChildControlType:</td>
                            <td><asp:DropDownList ID="ddl_ChildControlType" runat="server" SelectedValue='<%# Bind("CHILDCONTROLTYPE") %>' DataSourceID="ds_ControlTypes" DataValueField="VALUE" DataTextField="DESCRIPTION">
                                    </asp:DropDownList></td>
                           </tr>
                           <tr>
                               <td>ValidationMsg:</td>
                               <td><asp:TextBox ID="TextBox3" runat="server" Columns="75" Text='<%# Bind( "ValidationMsg") %>' TabIndex="2"></asp:TextBox></td>
                              </tr>
                              <tr>
                                  <td><asp:Button ID="btnUpdate" Text='<%# IIf((TypeOf(Container) is Telerik.Web.Ui.GridEditFormInsertItem), "Insert", "Update") %>'
                                                            runat="server" CommandName='<%# IIf( DataBinder.Eval(Container, "OwnerTableView.IsItemInserted"), "PerformInsert", "Update") %>'>
                                                        </asp:Button></td>
                                          <td><asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button></td>
                                    </tr>
                               </table>
                           </td>
                       </tr>                 
                   </table>
                   </FormTemplate>
                   <EditColumn UniqueName="EditCommandColumn1"></EditColumn>
                   </EditFormSettings>
                   <Columns>
                                        <telerik:GridEditCommandColumn>
                                        </telerik:GridEditCommandColumn>
                                        <telerik:GridBoundColumn DataField="OtherValidationID" DataType="System.Int32" HeaderText="ID"
                                            ReadOnly="True" SortExpression="OtherValidationID" UniqueName="OtherValidationID">
                                        </telerik:GridBoundColumn>
                                        <telerik:GridDropDownColumn DataField="ParentControlID"  DataSourceID="ds_DemoQuestions" HeaderText="Parent Question"
                                             ListTextField="QUESTION" ListValueField="ID" UniqueName="ParentControlID">
                                        </telerik:GridDropDownColumn>
                                        
                                        
                                        <telerik:GridDropDownColumn DataField="ParentControlType" DataSourceID="ds_ControlTypes" HeaderText="ParentCtlType"
                                             ListTextField="DESCRIPTION" ListValueField="VALUE" UniqueName="ddl_ParentControlType">
                                        </telerik:GridDropDownColumn
                                        <telerik:GridDropDownColumn DataField="DetailID" DataSourceID="ds_DemoValues" HeaderText="DetailID"
                                             ListTextField="VALUE" ListValueField="ID" UniqueName="ddl_DemoID">
                                        </telerik:GridDropDownColumn
                                                                                    
                                       <telerik:GridBoundColumn DataField="DetailID" DataType="System.Int32" HeaderText="DetailIDVal"
                                            SortExpression="DetailID" UniqueName="DetailID" >
                                        </telerik:GridBoundColumn>
                                        <telerik:GridBoundColumn DataField="ChildControlID" DataType="System.Int32" HeaderText="ChildControlID"
                                            SortExpression="ChildControlID" UniqueName="ChildControlID" Display="False">
                                        </telerik:GridBoundColumn>
                                           
                                        <telerik:GridDropDownColumn DataField="ChildControlID" DataSourceID="ds_DemoQuestions" HeaderText="Child Question"
                                             ListTextField="QUESTION" ListValueField="ID" UniqueName="ddl_ChildControlID">
                                        </telerik:GridDropDownColumn>
                                        <telerik:GridBoundColumn DataField="Description" DataType="System.Int32" HeaderText="Description"
                                            SortExpression="Description" UniqueName="Description">
                                        </telerik:GridBoundColumn>
                                                                           <telerik:GridDropDownColumn DataField="ChildControlType" DataSourceID="ds_ControlTypes" HeaderText="ChildCtlType"
                                             ListTextField="DESCRIPTION" ListValueField="VALUE" UniqueName="ddl_ChildControlType">
                                        </telerik:GridDropDownColumn>
                                        <telerik:GridBoundColumn DataField="ValidationMsg" HeaderText="ValidationMsg" SortExpression="ValidationMsg"
                                            UniqueName="ValidationMsg">
                                        </telerik:GridBoundColumn>
                                        <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName= "DeleteColumn">
                                        <ItemStyle VerticalAlign="Top" /></telerik:GridButtonColumn>
                                                            </Columns>
                                   </MasterTableView>
                                   </telerik:RadGrid>

    Very little happens in the code-behind. I have tried some default value manipulation there, but it seems it only works on either the PageLoad or Add Record or Edit..... but never all three.

    Please help.
    Dana
  2. Antonio Stoilkov
    Admin
    Antonio Stoilkov avatar
    530 posts

    Posted 23 Jan 2012 Link to this post

    Hello Dana,

    Using declarative data sources in this case will not work. However, you could use the approach in the demo below to achieve your scenario. Note that the difference in the implementation is the accessing of controls. Please examine the Accessing Cells and Rows help article to see how the desired functionality can be implemented.

    Kind regards,
    Antonio Stoilkov
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top