0

詳細ビューの 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;
}
4

2 に答える 2

1

の場合Drop-downは、の代わりにDetailsViewを処理してください。ItemCommand eventDetailsViewDropDownList1_SelectedIndexChanged

これがお役に立てば幸いです

于 2012-08-14T04:46:46.037 に答える
0

あなたのマークアップは と を参照しID="DropDownList1"ID="DropDownList2"います。

ただし、イベント ハンドラはDetailsView1.FindControl("DropDownList6")およびを参照しDetailsView1.FindControl("DropDownList6")ます。これはあなたの問題に関連していますか?

于 2012-08-14T05:34:54.827 に答える