詳細ビューの 2 つの異なるフィールド内に 2 つのドロップダウン リストがあり、最初のリストが 2 番目の値を決定します。
最初の ddl autopostback から値を選択すると、すでに詳細ビューにあるすべてのデータが消去され、最初のドロップダウンリストが最初の選択に戻ります。
また、リストから選択すると(ddlの選択を複数回変更すると)、次がスローされます:
Eval()、XPath()、および Bind() などのデータバインディング メソッドは、データバインドされたコントロールのコンテキストでのみ使用できます。
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.InvalidOperationException: Eval()、XPath()、Bind() などのデータ バインディング メソッドは、データ バインドされたコントロールのコンテキストでのみ使用できます。
ソース エラー:
[該当するソース行はありません]
------First DDL
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SQLLEAVECODE"
DataTextField="LEAVETYPE" DataValueField="LEAVECODE"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
AppendDataBoundItems="True" ViewStateMode="Enabled" AutoPostBack="True"
SelectedValue='<%# BIND("REQLEAVECODE") %>' Width="80px">
<asp:ListItem> </asp:ListItem>
</asp:DropDownList>
-------Second DDL
<asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource1"
DataTextField="REASON" DataValueField="REASON"
SelectedValue='<%# Bind("leavetype") %>'>
</asp:DropDownList>
---------page load
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DetailsView1.DataBind();
}
}
--------DDL 1 selectedIndexChange
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList lvtype = (DropDownList)(DetailsView1.FindControl("DropDownList1"));
DropDownList lvreason = (DropDownList)(DetailsView1.FindControl("DropDownList2"));
Label27.Text = lvtype.SelectedValue.ToString();
DetailsView1.Fields[4].Visible = true;
}