For your information(這是我的原始問題webforms : add dynamically in javascript option to a dropdownlist,感謝ConnorsFan解決)。webforms:在updatepanel中使用infragistics webdropdown
我的目標是讓infragistics下拉列表啓用多選,並在每次選擇時我希望事件觸發的服務器端不刷新整個頁面。
這是我的aspx頁面:
<%@ Register assembly="Infragistics45.Web.v16.1, Version=16.1.20161.1000, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" namespace="Infragistics.Web.UI.ListControls" tagprefix="ig" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<ig:WebDropDown ID="WebDropDown1" runat="server" Width="200px" OnSelectionChanged="WebDropDown1_SelectionChanged" EnableMultipleSelection="true" EnableClosingDropDownOnSelect="false" AutoPostBack="true">
</ig:WebDropDown>
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlId="WebDropDown1" EventName="SelectionChanged"/>
</Triggers>
</asp:UpdatePanel>
這是我的代碼隱藏頁:
private List<string> allPossiblechoices = new List<string>() { "a", "b", "c","d","e" };
private List<string> defaultChoices = new List<string>() { "a", "b", "c" };
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
foreach(var choice in allPossiblechoices)
{
WebDropDown1.Items.Add(
new DropDownItem()
{
Text = choice,
Value = choice,
Selected = defaultChoices.Contains(choice)
}
);
}
}
}
protected void WebDropDown1_SelectionChanged(object sender, DropDownSelectionChangedEventArgs e)
{
// I put a breakpoint here to see what e.NewSelection and e.OldSelection are
}
默認情況下,當請求首次頁面時,下拉列表由a,b,c,d,e組成,只有a,b,c被選中。
當我選擇d,請求確實發送到服務器(我把一個斷點在我的事件處理程序),結果是正確的:
EventArgs的e.OldSelection包含,B,C。
EventArgs e.NewSelection包含a,b,c,d。
然後,我取消選擇d和結果如下:
EventArgs的e.OldSelection包含A,B,c.d。
EventArgs e.NewSelection包含a,b,c,d。
我不明白爲什麼EventArgs e.NewSelection包含d即使我取消選擇它。
事實上,它更奇怪的是,我沒有updatePanel做了同樣的事情,一切正常,選擇(新的和舊的)都是正確的。
在此先感謝您的幫助。
您是否嘗試在UpdatePanel中放置'WebDropDown1'? – ConnorsFan
我不想把它放進去,因爲在webdropdown1的每次選擇中,它將被關閉,所以一次做多選的事實將會丟失(即使使用EnableClosingDropDownOnSelect屬性) – user2443476
根據以下內容文章,該列表將始終關閉在回發:http://www.infragistics.com/community/forums/t/92484.aspx。除非每次使用'openDropDown'重新打開它(這會導致閃爍效果),否則您可能需要首先在您的其他帖子中實現您正在考慮的客戶端代碼。目前,WebDropDown保持人爲打開狀態,因爲它未包含在部分更新中。 – ConnorsFan