Le contrôle ASP.NET dans GridView n’existe pas dans le code derrière

J’ai une DropDownList que je voudrais remplir avec les valeurs de colonne d’une firebase database. Cependant, lorsque j’essaie de lier DropDownList dans le code, l’IDE continue de me dire:

“Le nom ‘EqpCatDDL’ n’existe pas dans le contexte actuel”

Je ne suis pas sûr de ce qui se passe depuis que j’ai fait référence au contrôle par son ID. Voici le code:

aspx:

                              

c #:

  public void Populate1() { ssortingng connSsortingng = ConfigurationManager.ConnectionSsortingngs["MyDbConn"].ConnectionSsortingng; SqlConnection connection = new SqlConnection(connSsortingng); SqlCommand cmd = new SqlCommand("SELECT EqpCateID, EqpCat FROM EqpCategory", connection); cmd.Connection.Open(); SqlDataReader ddlValues; ddlValues = cmd.ExecuteReader(); EqpCatDDL.DataSource = ddlValues; EqpCatDDL.DataValueField = "EqpCateID"; EqpCatDDL.DataTextField = "EqpCat"; EqpCatDDL.DataBind(); cmd.Connection.Close(); cmd.Connection.Dispose(); } protected void Page_Load(object sender, EventArgs e) { Populate1(); } 

L’EDI ne trouve pas le contrôle EqpCatDDL.

J’utilise les éléments suivants: Visual Studio 2010, Microsoft SQL Server Management Studio 2008

Je travaille avec un site Web Visual Studio

Utilisez ce code pour lier des données à une dropdown sans utiliser RowDataBound .

Créez une fonction qui liera les données à la dropdown comme suit et appelez-la dans l’événement Page_Load

 Public void fill_gridView_dropDown() { // your connection and query to resortingeve dropdown data will go here // this loop will go through all row in GridView foreach(GridViewRow row in your_gridView_Name.Rows) { DropDownList dropDown = (DropDownList)row.FindControl("dropDownList_id"); dropDown.DataSource = dataSource; dropDown.DataValueField = "ValueField"; dropDown.DataTextField = "TextField"; dropDown.DataBind(); } } 

Veuillez noter que vous devez d’abord bind GridView, puis votre liste déroulante.

votre liste déroulante est en gridview afin que vous puissiez essayer avec ce code

 protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { var ddl = (DropDownList)e.Row.FindControl("EqpCatDDL'"); SqlCommand cmd = new SqlCommand("SELECT EqpCateID, EqpCat FROM EqpCategory", connection); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); EqpCatDDL.DataSource = ds; EqpCatDDL.DataValueField = "EqpCateID"; EqpCatDDL.DataTextField = "EqpCat"; EqpCatDDL.DataBind(); } } 

Vous ne pouvez pas renseigner directement GridView's dropdownlist GridView's cette manière. Vous devez d’abord définir la source de données de GridView c’est-à-dire

 GridView1.DataSource = DataSource 

Et si vous souhaitez accéder à la dropdownlist de cette grid, vous pouvez utiliser le RowDataBound événements RowDataBound de GridView savoir

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //Checking whether the Row is Data Row if (e.Row.RowType == DataControlRowType.DataRow) { //Finding the Dropdown control. Control ctrl = e.Row.FindControl("EqpCatDDL"); if (ctrl != null) { DropDownList dd = ctrl as DropDownList; List lst = new List(); dd.DataSource = lst; dd.DataBind(); } } }