2016-09-02 8 views
0

Gridview内で動的にバインドされるn個のドロップダウンリストを使用するWebページを開発しています。私は、ドロップダウンリストのselectedindexchangedイベントに基づいて操作を実行したいと思います。私はそれを行い、うまくいっていましたが、2回目にdropdownlistを変更したときにポストバックはしますが、イベントは呼び出されません。Gridview内の動的に作成されたドロップダウンリストが2回目にイベントを起動しない

あなたは、あなたが取るとPage_PreInitページ方式で再びDropDownListコントロールをバインドする必要があり、このため、ここで

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridDropDownTest.aspx.cs" 
Inherits="gridDropDownTest" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div>  <asp:GridView ID="gridLedgeDetails" runat="server" OnRowDataBound="OnRowDataBound" 
     OnDataBound="gridLedgeDetails_DataBound">  </asp:GridView> 
</div> 
</form></body></html> 


using System; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 

public partial class gridDropDownTest : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     databind(); 
    } 
    public void databind() 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Mode"); 
     dt.Rows.Add(""); 
     dt.Rows.Add(""); 
     gridLedgeDetails.DataSource = dt; 
     gridLedgeDetails.DataBind(); 
    } 
    protected void OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DropDownList ddlMode = new DropDownList(); 
      ddlMode.Width = 90; 
      ddlMode.Attributes.Add("style", "background-color:#ff6600;"); 
      ddlMode.Items.Add("Regular"); 
      ddlMode.Items.Add("Monthwise"); 
      ddlMode.SelectedIndexChanged += new EventHandler(ddlMode_Indexchanged); 
      ddlMode.AutoPostBack = true; 
      ddlMode.ID = "ddlMode_"; 
      e.Row.Cells[0].Controls.Add(ddlMode); 
     } 
    } 
    protected void gridLedgeDetails_DataBound(object sender, EventArgs e) { } 
    protected void ddlMode_Indexchanged(object sender, EventArgs e) 
    { 
     string uid = this.Page.Request.Params.Get("__EVENTTARGET"); 
     if (uid != null && uid.Contains("ddlMode_")) 
     { 
      string[] values = uid.Split('$'); 
      string row = values[1].Replace("ctl", ""); 
      Control ctrl = Page.FindControl(uid); 
      DropDownList ddl = (DropDownList)ctrl; 
      if (ddl.SelectedIndex == 1) 
      { 

      } 
     } 
    } 
} 

enter image description here

+0

小チップ、Webフォームは廃止されています。意味Asp.net 4.6は最後のバージョンです。 –

答えて

0

私のコードを見ることができます。例については

....

保護無効Page_PreInit(オブジェクト送信者、EventArgsの電子)

{

は//ここでもう一度GridViewのを構築する必要があります。

//その後、状態が同じ保持する......

}

+0

私はこれを3日間続けてきました。ありがとうございました –

関連する問題