2011-08-09 65 views
0
當下拉列表包含一個項目

on this site ,點擊時不會引起後背部後回到下拉列表

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DropDownList1.Items.Add("a"); 

     DropDownList2.Items.Add("a"); 
     DropDownList2.Items.Add("b"); 

    } 
} 


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Write(DropDownList1.Text);//does not work ???????????? 
} 
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Response.Write(DropDownList2.Text); 

} 

on this site

回答

1

DropDownList1_SelectedIndexChanged永遠不會觸發因爲你只在DropDownList1有1項,因此索引將永遠不會改變。

更新

你可以做的是一個空值添加到dropdownlist1,像這樣

<asp:DropDownList runat="server" ID="DropDownList1"> 
    <asp:ListItem Value="0" Text="Choose option" Selected="true" /> 
    <asp:ListItem Value="1" Text="a" /> 
</asp:DropDownList> 
+0

如何解決這個問題,當點擊item1回發 – ashkufaraz

+0

@GodIsLive看看我更新的答案 – diceler

0

DropDownList1_SelectedIndexChanged不會觸發,因爲所選擇的指數已經a。 可以在這裏找到DropDownList Events的列表DropDownList Events。事件DataBound應該觸發,在那裏你可以做Response.Write(DropDownList1.Text);

0

可能是你可以在索引0它說「選擇」,當用戶更改選擇它會導致一個回添加新項...

DropDownList1.Items.Add("SELECT"); 
DropDownList1.Items.Add("a"); 
0

asp:DropDownListAutoPostBack="true"呈現爲html select標記具有客戶端onchange事件和一個自動生成的java腳本函數來處理此事件的客戶端onchange事件。

也就是說,如果您有:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"> 
    </asp:DropDownList> 

呈現的頁面的源代碼的樣子:

<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1"> 

,你才能看到postback客戶端onchange事件已被觸發。客戶端onchange只有在html select標記有兩個或更多option s可選時纔會發生。

我看到解決方案已經發布,只是認爲將很好解釋它的細節。

用兩個詞來說,對於asp:DropDownList控制必須有多於一個的asp:ListItem

0

我想要一個類似的東西。下面的代碼爲我做了。確保它是SelectedIndexChanged方法中的第一個代碼。

//fixes error when postback 
    if (DropDownList.SelectedIndex == 0) 
    { 
     DropDownList.SelectedIndex = 1; 
    }