動的データ Web サイトで作業していて、壁にぶつかりました。各従業員の詳細を確認できる詳細ページと、各従業員を編集するための個別のページがあります。これを行ったのは、各部門の部門と役職に 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 を設定しようとしています。これが私が使用しようとしている DataSource です。
<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>
別の ddl を使用して DetailsView にデータを入力しているため、Select パラメーターの形式が正しいことがわかります。また、Departments と JobCodes の関係が正しく、AddEmployee ページで正常に使用されていることもわかっています。
これが私が得るエラーです:
ControlParameter 'DeptID' にコントロール 'ddlDept' が見つかりませんでした。
EditItemTemplate にあるため、ID で ddlDept にアクセスできないと仮定して正しいですか? どうすればこれを修正できますか? これを達成する方法に関する他の提案はありますか?どんな助けでも大歓迎です。