2012-05-22 57 views
0

裏面我有一個DataList和裏面我有一個DropDownList:如何找到下拉列表的控制DataList控件

<asp:DataList ID="dlconfigureItem" runat="server"> 
    <ItemTemplate> 
    <asp:DropDownList CssClass="config-select" ID="ddlitem runat="server"></asp:DropDownList> 
    </ItemTemplate> 
    </asp:DataList> 

我怎樣才能在服務器端的DropDownList的SelectedIndexChanged事件?我試過這個:

public void ddlitem_selectedindexchanged (object sender, EventArgs e) 
    { 

    } 

但它不工作。

+0

不知道這是一個O型,但你也失蹤關閉「在你的下拉列表中,你的ID爲 –

回答

1

SelectedIndexChanged事件的最簡單的是投senderDropDownList

var ddl = (DropDownList)sender; 

發件人總是作爲事件源的控制。

爲了完整起見,從DataListItemDataBound

protected void dlconfigureItem_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    DropDownList ddlitem = e.Item.FindControl("ddlitem") as DropDownList; 
    if (ddlitem != null) 
    { 
     // ... 
    } 
} 

編輯:你忘了註冊事件?

<asp:DropDownList CssClass="config-select" 
    ID="ddlitem" 
    OnSelectedIndexChanged="ddlitem_selectedindexchanged"  
    runat="server"> 
</asp:DropDownList> 

請注意,您不應該在回發時將DataList綁定到它的DataSource,否則不會觸發事件。因此請檢查頁面的IsPostBack屬性。

例如在page_load

if(!IsPostBack)BindDataList(); 
0

不知道如果你不能在服務器上所選項目或您無法找到處理該事件的方式。如果你的問題是與事件處理,試試這個

<asp:DataList ID="dlconfigureItem" runat="server"> 
    <ItemTemplate> 
    <asp:DropDownList CssClass="config-select" ID="ddlitem" 
     OnSelectedIndexChanged="ddlitem_selectedindexchanged" 
     AutoPostBack="true" runat="server"></asp:DropDownList> 
    </ItemTemplate> 
    </asp:DataList> 
1

您已經定義了服務器端的方法:

public void ddlitem_selectedindexchanged (object sender, EventArgs e) 
{ 

} 

,但是你還沒有告訴客戶端,有你的一個事件,所以在html代碼中告訴它:

onselectedindexchanged="ddlitem_selectedindexchanged" 

並且還將AutoPostBack屬性設置爲true。

+0

,你也可以像Tim那樣說:」請注意,你不應該將你的DataList綁定到它的DataSource上,否則事件不會被觸發。「也檢查一下。 –

0

註冊事件並設置AutoPostBack="true"

<asp:DropDownList CssClass="config-select" 
    ID="ddlitem" 
    AutoPostBack="true" 
    OnSelectedIndexChanged="ddlitem_selectedindexchanged"  
    runat="server"> 
</asp:DropDownList> 

事件(特定指數的變化就可以得到所選擇的值)

protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var ddlList = (DropDownList)sender; 
     string selectedValue = ((DropDownList)ddlList.NamingContainer.FindControl("ddlitem")).SelectedValue; 
    }