ASP.NET は初めてで、現在、DetailsView のドロップダウン リストに問題があります。
例外エラー: System.InvalidOperationException: Eval()、XPath()、Bind() などのデータ バインディング メソッドは、データ バインドされたコントロールのコンテキストでのみ使用できます。
このコードは、DetailsView のドロップダウンリストのリストを更新するためのコード ビハインドです。
protected void ddlVendor_SelectedIndexChanged
(object sender, EventArgs e)
{
DropDownList ddlVendorBB =
(DropDownList)DetailsView1.FindControl("VendorBUName");
if (ddlVendorBB != null)
{
Response.Write("SelectChanged");
ddlVendorBB.DataBind();
}
}
protected void SqlDataSourceProd_Selecting
(object sender, SqlDataSourceSelectingEventArgs e)
{
DropDownList ddlVendor =
(DropDownList)DetailsView1.FindControl("VendorName");
if (ddlVendor != null)
{
e.Command.Parameters["@VendorID"].Value = ddlVendor.SelectedValue;
}
}
DetailsView のこれら 2 つのドロップダウンリスト
<EditItemTemplate>
<asp:DropDownList id="VendorName"
datasourceid="VendorSqlDataSource"
AutoPostBack="true"
datatextfield="VendorName"
DataValueField="VendorID"
SelectedValue='<%# Bind("VendorID") %>'
runat="server"
OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" />
<asp:SqlDataSource ID="VendorSqlDataSource"
ConnectionString="<%$Connectionstrings:ConnectionString%>"
SelectCommand="SELECT VendorID, VendorName from MDF_Vendor"
runat="server">
</asp:SqlDataSource>
</EditItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="VendorBUName"
datasourceid="VendorBUSqlDataSource"
datatextfield="VendorBUName"
DataValueField="VendorBUID"
SelectedValue='<%# Bind("VendorBUID") %>'
runat="server"/>
<asp:SqlDataSource ID="VendorBUSqlDataSource"
runat="server"
ConnectionString="<%$Connectionstrings:ConnectionString%>"
selectcommand="SELECT VendorBUID, VendorBUName
from MDF_VendorBU
Where VendorID = @VendorID"
OnSelecting="SqlDataSourceProd_Selecting">
<SelectParameters>
<asp:Parameter Name="VendorID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</EditItemTemplate>
問題は次のとおりです。
SelectedValue= のままにしておくと、編集モードのドロップダウンリストは、最初に [編集] をクリックしたときにリストされた項目の正しい値を選択しましたが、新しい VendorName を選択すると、「Eval()、Xpath()、および練る()... "。
ここで、ドロップダウンリストの Selectedvalued を削除すると、新しい VendorName を選択したときに VendorBUName が更新されますが、[編集] をクリックしてもデフォルトの VendorID は選択されません。現在の VendorID を選択せずに、VendorName リストをリストするだけです。
誰かが私のコードで何が間違っているか教えてもらえますか? ありがとう!