我正在开发一个动态数据网站,但遇到了问题。我有一个详细信息页面,可以查看每个员工的详细信息,然后我有一个单独的页面来编辑每个员工。我这样做是因为我需要在每个部门中使用DropDownList框来选择部门和工作。然而,我无法访问部门下拉列表并且我认为这是因为它位于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,并且我知道Departments和JobCodes之间的关系是正确的,因为我在AddEmployee页面中成功使用它。
以下是我收到的错误信息:
在 ControlParameter 'DeptID' 中找不到控件'ddlDept'。
我是否正确地假设它无法通过它的ID访问ddlDept,因为它在EditItemTemplate中?我该如何解决这个问题?还有其他实现此目标的建议吗?非常感谢任何帮助。