2016-12-03 55 views
0

這似乎是一個常見問題。我嘗試過不同的解決方案,但仍然無法正常工作。這是我的代碼。DropDownList SelectIndexChanged不工作?

HTML:

<div class="form-group"> 
    <label for="exampleInputEmail1">Artist *</label> 
    <asp:DropDownList ID="artistDropdown" runat="server" CssClass="form-control" AutoPostBack="True" OnSelectedIndexChanged="artistDropdown_SelectedIndexChanged" ViewStateMode="Enabled"></asp:DropDownList> 
    <asp:TextBox ID="mytest" runat="server"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="artistDropdown" SetFocusOnError="true" ErrorMessage="Required Field" Font-Bold="True" Font-Names="Arial" Font-Size="X-Small" ForeColor="Red"></asp:RequiredFieldValidator> 
    <asp:Label ID="lblMessage" runat="server" CssClass="help-block" Visible="False">Cant select Artist with no Manager</asp:Label> 
</div> 

功能:OnSelectedIndexChanged

protected void artistDropdown_SelectedIndexChanged(object sender, EventArgs e) 
{ 

string selectedArtist = artistDropdown.SelectedValue; 
mytest.Text = selectedArtist; 
string query = "Select [Manager ID] from Artist Where ID = '" + selectedArtist + "'"; 

string myConnection = dbController.connectionString; 
SqlConnection conn = new SqlConnection(myConnection); 

SqlCommand cmd = new SqlCommand(query, conn); 
conn.Open(); 
object obj = cmd.ExecuteScalar(); 
if (obj is System.DBNull) 
{ 
    artistDropdown.SelectedValue = ""; 
    lblMessage.Visible = true; 
} 
else 
{ 
    lblMessage.Visible = false; 
} 
conn.Close(); 
} 

我加載的DropDownList在Page_Load()功能和AutoPostBack="True"設置爲DropDownList的。

我也做了一個TextBox,它被設置爲DropDownList的selectedValue來檢查OnSelectedIndexChanged是否正在觸發。但文本框保持空白。

我在做什麼錯?

+0

如果將'mytest.Text = selectedArtist;'更改爲'mytest.Text = selectedArtist + DateTime.Now.ToString();'?我懷疑'artistDropdown'中的'Values'是空的。 – VDWWD

回答

0

你把你的下拉列表綁定在if(!postback){}中嗎?

如果您在每次回發後重新列出列表,則會在到達artistDropdown_SelectedIndexChanged事件時獲取第一個列表項的值。 如果此項目有一個空字符串值...

+0

是的,我綁定DDL在if(!postback) – EL323

相關問題