2015-07-06 36 views
2

我想在面板內製作一個DropDownList。這是來自代碼隱藏文件的代碼。但是如果我執行它,它總是會說:「在DropdownList中不允許進行多項選擇。」我需要對autopostback做些什麼嗎?所以如果我想選擇比「全部」更多的東西,就會出現錯誤。我的ASP.NET DropDownList不起作用

DropDownList1.DataTextField = "Kanal"; 
DropDownList1.DataValueField = "Kanal"; 
DropDownList1.AppendDataBoundItems = true; 
ListItem limDefault = new ListItem(); 

limDefault.Selected = true; 
limDefault.Text = "All"; 
limDefault.Value = "-1"; 


      DropDownList1.Items.Add(limDefault); 

然後,這是我的ASP.NET代碼:

<asp:Panel ID="Panel1" runat="server"> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CR_SQL %>" SelectCommand="Select * from table" > 
    </asp:SqlDataSource> 
    <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" AutoPostBack="True"> 
    </asp:DropDownList> 
</asp:Panel> 
+0

哪裏是代碼,你將它包裝在一個'如果...'(的IsPostBack!)? –

+0

@TimSchmelter否我的代碼在Page_Load方法中 – aha364636

回答

4

我猜你執行每其中每一次添加默認項目回傳的第一個片段。不要只在第一次加載頁面,因此使用Page.IsPostBack檢查:

if(!IsPostBack) 
{ 
    ListItem limDefault = new ListItem(); 
    limDefault.Selected = true; 
    limDefault.Text = "All"; 
    limDefault.Value = "-1"; 
    DropDownList1.Items.Add(limDefault); 
} 
+0

@所以,如果我將AutoPostback設置爲true,我總是需要一個if(!IsPostBack)? – aha364636

+1

@ aha364636:是的,但即使沒有AutoPostBack = true,也可以回發其他控件。如果你啓用了'ViewState',所有數據綁定的東西都屬於'if(!isPostBack){...}',因爲你不需要/需要多次執行它。只有在數據源發生變化時(例如,如果您想顯示不同的順序),過濾記錄或使用分頁,則必須重新載入數據。 –