Ne pouvait pas trouver de Contrôle dans ControlParameter à l'intérieur de EditItemTemplate

Je suis en train de travailler sur une Dynamique de Données site web et j'ai couru dans un mur. J'ai une page de Détails où les détails pour chaque employé peut être vu, et puis j'ai une page distincte pour modifier chaque employé. Je l'ai fait parce que j'ai besoin d'utiliser DropDownList boîtes pour le Ministère et l'Emploi dans chaque département. Néanmoins, j'ai de la difficulté d'accéder au département ddl et je pense que c'est parce qu'il est à l'intérieur d'un EditItemTemplate. Voici ce que j'ai:

<asp:DetailsView ID="dvEmployee" 
                    DataSourceID="EmpDVds" 
                    AutoGenerateRows="false" 
                    DataKeyNames="Id" 
                    GridLines="None" 
                    CellSpacing="10" 
                    runat="server" DefaultMode="Edit">
                    <Fields>
                        <asp:TemplateField HeaderStyle-Font-Bold="true" HeaderText="Department: ">
                            <EditItemTemplate>
                                <asp:DropDownList ID="ddlDept" DataSourceID="DeptDDLds" DataTextField = "DepartmentName" DataValueField = "Id" runat="server" SelectedValue='<%#Bind("DeptID") %>' />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderStyle-Font-Bold="true" HeaderText="Job Code: ">
                            <EditItemTemplate>
                                <asp:DropDownList ID="ddlJob" DataSourceID="JobDDLds" DataTextField = "JobName" DataValueField = "Id" runat="server" />
                            </EditItemTemplate>
                        </asp:TemplateField>
                    </Fields>

Alors je suis en train d'utiliser le ddlDept SelectedValue pour remplir la ddlJob. Voici la source de données, je suis en train d'utiliser.

<asp:SqlDataSource ID="JobDDLds"
                    SelectCommand="
                        SELECT 
                        Id, 
                        Code+' - '+[Desc] AS JobName,
                        Department_Id 
                        FROM 
                        JobCodes 
                        WHERE
                        JobCodes.Department_Id = @DeptID"
                    ConnectionString="<%$ConnectionStrings:TrainingDatabaseConnection %>" runat="server" >
                        <SelectParameters>
                            <asp:ControlParameter ControlID="ddlDept" PropertyName="SelectedValue"
                                    Name="DeptID" Type="Int32" />
                        </SelectParameters>
                    </asp:SqlDataSource>

Je sais que le format de l'Sélectionnez paramètre est correct parce que je suis en utilisant un autre ddl pour remplir le contrôle DetailsView et je sais que la relation entre les Départements et le code d'emploi est correct parce que je suis de l'utiliser avec succès et AddEmployee page.

Voici l'erreur que je reçois:

Ne pouvait pas trouver de contrôle "ddlDept" dans ControlParameter 'DeptID'.

Je suis-je raison de supposer qu'il ne peut pas accéder à la ddlDept par l'ID parce que c'est dans la EditItemTemplate? Comment puis-je résoudre ce problème? D'autres suggestions sur la façon de réaliser cet objectif? Toute aide est grandement appréciée.

Vérifiez si le ceci aide. N'est pas une solution idéale, mais il peut fonctionne pour vous.

OriginalL'auteur Tyler Mortensen | 2012-05-21