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

Problems with controlparameters using GridDropDownColumns in RadGrid

1 Answer 175 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Dana Cobb
Top achievements
Rank 1
Iron
Dana Cobb asked on 18 Jan 2012, 07:47 PM
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

1 Answer, 1 is accepted

Sort by
0
Antonio Stoilkov
Telerik team
answered on 23 Jan 2012, 09:02 AM
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
Tags
Grid
Asked by
Dana Cobb
Top achievements
Rank 1
Iron
Answers by
Antonio Stoilkov
Telerik team
Share this question
or