簡體   English   中英

如何在數據列表中找到下拉列表的控件

[英]how to find control of dropdownlist inside a datalist

我有一個DataList,里面有一個DropDownList:

  <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)
    {

    }

但它不起作用。

SelectedIndexChanged事件中,最簡單的方法是將sender轉換為DropDownList

var ddl = (DropDownList)sender;

發送者始終是作為事件源的控件。

為了完整起見,來自DataList ItemDataBound

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();

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

public void ddlitem_selectedindexchanged (object sender, EventArgs e)
{

}

但是您沒有告訴客戶端有一個適合您的事件,因此在html代碼中這樣告訴它:

 onselectedindexchanged="ddlitem_selectedindexchanged"

並將AutoPostBack屬性設置為true。

注冊事件並設置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;   
    }

不知道您是否無法在服務器上獲取選定的項目,或者找不到處理事件的方法。 如果您的問題與事件處理有關,請嘗試以下操作

  <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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM