2012-08-13 68 views
0

我有兩個下拉列表在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; 
} 
+2

試試這個,你可能會有一些樂趣:http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx – bugnuker 2012-08-13 23:21:41

+0

謝謝,我已經通過了,但我似乎有問題,因爲ddl是在詳細視圖中,所以我無法讓級聯下拉列表在我的程序中正常工作 – user1596472 2012-08-15 14:20:44

回答

1

如果Drop-downDetailsView,那麼請處理DetailsViewItemCommand event而不是DropDownList1_SelectedIndexChanged

希望這將幫助你

+0

它越來越近了。現在,當我從DDL1中選擇時,它將在回發時保持選定值,但不允許DDL2填充。 – user1596472 2012-08-14 15:57:24

+0

您必須在DDL1的ItemCommand事件中重新綁定DDL2。 – Mohmedsadiq 2012-08-22 05:51:10

+0

這樣做會導致此錯誤:數據綁定方法(如Eval(),XPath()和Bind()只能用於數據綁定控件的上下文中。 – user1596472 2012-08-23 13:35:10

0

您的標記是指ID="DropDownList1"ID="DropDownList2"

但是,您的事件處理函數參考DetailsView1.FindControl("DropDownList6")DetailsView1.FindControl("DropDownList6")。這可能與你的問題有關嗎?

+0

對不起,這是我的轉移錯誤,下拉列表被命名爲5和6,但我認爲這會令人困惑,因爲6是第一個,5是第二個,所以爲了論壇的目的,我將它改爲1和2。 – user1596472 2012-08-14 16:02:57