我在详细信息视图中的两个不同字段中有两个下拉列表,第一个确定第二个的值。
当我从第一个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;
}
答案 0 :(得分:1)
如果Drop-down
位于DetailsView
,请处理ItemCommand event
DetailsView
而不是DropDownList1_SelectedIndexChanged
。
希望这会对你有所帮助
答案 1 :(得分:0)
您的标记是指ID="DropDownList1"
和ID="DropDownList2"
。
但是,您的事件处理程序引用了DetailsView1.FindControl("DropDownList6")
和DetailsView1.FindControl("DropDownList6")
。这可能与你的问题有关吗?