2017-04-20 99 views
0

我已經在GridView的每個列標題中下拉列表中動態填充gridview_rowdatabound事件。它被用於過濾功能。Gridview標題下拉列表過濾未觸發SelectedIndexChanged方法

我能夠獲得下拉和項目的名單,但選擇指數改變方法不被解僱

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //some condition 

    DropDownList ddl = new DropDownList(); 
    //some ddl properties 
    ddl.AutoPostBack = true; 
    ddl.SelectedIndexChanged += new EventHandler(ddl_OnSelectedIndexChanged); 
} 

我還放置一個新的事件處理方法,但這個事件沒有得到被解僱。

private void ddl_OnSelectedIndexChanged(Object sender, EventArgs e) 
{ 
    string test = "reached on select Index changed"; 
} 

任何關於如何獲得ddl更改事件的這種方法的建議?

回答

0

問題是您在RowDataBound事件中分配了SelectedIndexChanged事件。

因爲它只在頁面加載時被調用,而不是在回發(如果你將數據綁定封裝在if (!IsPostBack) { }的內部),綁定在PostBack中丟失,並且該方法不會被執行。

因此,您必須確保您在每次頁面加載時都添加處理程序。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     GridView1.DataSource = mySource; 
     GridView1.DataBind(); 
    } 

    DropDownList ddl = GridView1.HeaderRow.FindControl("DropDownList1") as DropDownList; 
    ddl.AutoPostBack = true; 
    ddl.SelectedIndexChanged += new EventHandler(ddl_OnSelectedIndexChanged); 
}