0

masterpage を使用しています。ascx ページで、selectedindexchange イベントが発生しません。

ここに画像の説明を入力

これは私のコードです:

私のascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FilterList.ascx.cs"
Inherits="F8.B2B.WEB.UserControls.Common.FilterList.FilterList" %>

<asp:UpdatePanel UpdateMode="Always" runat="server">
    <ContentTemplate>
       <div id="filterList" runat="server">

       </div>
    </ContentTemplate>
</asp:UpdatePanel>

私の ascx.cs:

 protected void Page_Load(object sender, EventArgs e)
 {
   if (!IsPostBack)
   {
      createFilterLists();
   } 
 }


private void createFilterLists()
{
    ListBox dpList = new ListBox()
    {
        ID = ControlID
    };
    dpList.Items.Clear();
    if (lst_ListItem != null)
    {

        foreach (ListItem item_ in lst_ListItem)
        {
            dpList.Items.Add(item_);
        }
        dpList.Items[0].Selected = true;
        dpList.AutoPostBack = true;
        dpList.EnableViewState = true;
        dpList.SelectedIndexChanged += new EventHandler(myListBox_SelectedIndexChanged);



        filterList.Controls.Add(dpList);

    }
}

protected void myListBox_SelectedIndexChanged(object sender, EventArgs e)
{
    // might be entered on change
}
4

2 に答える 2

4

リスト ボックスはコードによって動的に生成されるため、ポストバックであってもページを読み込むたびにリスト ボックスを追加する必要があります。

于 2012-07-24T11:47:09.867 に答える
0

動的コントロールを作成し、OnInitイベントにイベントハンドラーを追加します

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 

    CreateControls();

    myDataGrid.SomeEventHandler += new ...
}

OnLoadイベントでデータをバインドしてコントロールを埋める

protected void Page_Load(object sender, EventArgs e)    
{    
    if (!IsPostBack)    
    {    
        FillControls(); 

        myDataGrid.DataSource = somedatasource;
        myDataGrid.DataBind();   
    }     
}  



private void CreateControls()     
{     
    ListBox dpList = new ListBox()     
    {     
        ID = ControlID     
    };     

    dpList.AutoPostBack = true;     
    dpList.EnableViewState = true;     
    dpList.SelectedIndexChanged += new EventHandler(myListBox_SelectedIndexChanged);     

    filterList.Controls.Add(dpList);      
}  

private void FillControls()
{
    dpList.Items.Clear();
    if (lst_ListItem != null && lst_ListItem.Count > 0)     
    {     

        foreach (ListItem item_ in lst_ListItem)     
        {     
            dpList.Items.Add(item_);     
        }     
        dpList.Items[0].Selected = true;    
    }
}
于 2012-07-24T12:03:37.907 に答える