我有两个下拉列表在detailsview中的两个不同的字段内,第一个确定第二个值的值。DropDownList Autopostback清除字段,恢复为默认
当我从第一个ddl中选择一个值时,autopostback将删除detailsview中的所有数据,并将第一个下拉列表恢复为第一个选择。
此外,当我从列表中选择(改变DDL选择一次以上),它会抛出:
数据绑定方法如eval()函数,XPath的(),并绑定()只能在使用数据绑定控件的上下文。
描述:执行当前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;
}
试试这个,你可能会有一些乐趣:http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx – bugnuker 2012-08-13 23:21:41
谢谢,我已经通过了,但我似乎有问题,因为ddl是在详细视图中,所以我无法让级联下拉列表在我的程序中正常工作 – user1596472 2012-08-15 14:20:44