Я работаю над веб-сайтом Dynamic Data и столкнулся со стеной. У меня есть страница сведений, на которой можно увидеть сведения о каждом сотруднике, а затем у меня есть отдельная страница для редактирования каждого сотрудника. Я сделал это, потому что мне нужно использовать поля DropDownList для отдела и работы в каждом отделе. Тем не менее, у меня возникли проблемы с доступом к ddl отдела, и я думаю, это потому, что он находится внутри EditItemTemplate. Вот что у меня есть:
<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>
Затем я пытаюсь использовать ddlDept SelectedValue для заполнения ddlJob. Вот источник данных, который я пытаюсь использовать.
<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>
Я знаю, что формат параметра Select правильный, потому что я использую другой ddl для заполнения DetailsView, и я знаю, что отношение между отделами и JobCodes правильное, потому что я успешно использую его на странице AddEmployee.
Вот ошибка, которую я получаю:
Не удалось найти элемент управления «ddlDept» в параметре ControlParameter «DeptID».
Правильно ли я предполагаю, что он не может получить доступ к ddlDept по его идентификатору, потому что он находится в EditItemTemplate? Как я могу это исправить? Другие предложения о том, как этого добиться? Любая помощь приветствуется.