cómo vincular una lista desplegable en gridview?

Tengo una vista en cuadrícula en la que cada fila contiene una lista desplegable. Quiero vincular dinámicamente cada lista desplegable. ¿Puede alguien decirme cómo puedo hacerlo? Gracias por adelantado

Si está utilizando una columna de plantilla, puede vincular su menú desplegable desde el marcado utilizando expresiones de enlace de datos. Por ejemplo,

     

Más arriba asume que sus datos desplegables son constantes en todas las filas. Si está cambiando, puede usar expresión de enlace de datos, como

  

GetDropDownData será un método protegido en código subyacente que devolverá los datos (tabla de datos, lista, matriz) para la fila dada.

Puede usar el evento GridView.RowDataBound (o el evento RowCreated) en el código subyacente para rellenar los menús desplegables. Por ejemplo,

  protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { // Find the drop-down (say in 3rd column) var dd = e.Row.Cells[2].Controls[0] as DropDownList; if (null != dd) { // bind it } /* // In case of template fields, use FindControl dd = e.Row.Cells[2].FindControl("MyDD") as DropDownList; */ } } 

Además de los métodos propuestos, también puede vincular los controles dentro de su marcado, de esta manera:

           

Aquí está tu gridview

            

y su evento RowDataBound para gridview sería

  protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) { string cities = "maxico,chennai,newdelhi,hongkong"; string [] arr = cities.Split(','); // Instead of string array it could be your data retrieved from database. if (e.Row.RowType == DataControlRowType.DataRow) { DropDownList ddl = (DropDownList)e.Row.FindControl("DrdDatabase"); foreach (string colName in arr ) ddl.Items.Add(new ListItem(colName)); } } 
 protected void gvSalesAppData_RowDataBound(Object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DropDownList ddlCurrentPhase = (DropDownList)e.Row.FindControl("ddlCurrentPhase"); DropDownList ddlProductFamily = (DropDownList)e.Row.FindControl("ddlProductFamily"); DropDownList ddlProductGroup = (DropDownList)e.Row.FindControl("ddlProductGroup"); DropDownList ddlETProgramManager = (DropDownList)e.Row.FindControl("ddlETProgramManager"); DropDownList ddlPLMForTheProduct = (DropDownList)e.Row.FindControl("ddlPLMForTheProduct"); TrackingToolObj.BindCurrentPhases(ddlCurrentPhase); TrackingToolObj.BindCurrentPhases(ddlProductFamily); TrackingToolObj.BindProductGroups(ddlProductGroup); TrackingToolObj.GetEmployeesBasedOnRoleTypeId(ddlETProgramManager, (int)OSAEnums.RoleTypes.ProgramManager, false); TrackingToolObj.GetEmployeesBasedOnRoleTypeId(ddlPLMForTheProduct, (int)OSAEnums.RoleTypes.PLM, false); } } 

Encuadernación de GridView

A continuación se muestra el código para enlazar el control GridView con datos.

DO#

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.BindData(); } } private void BindData() { string query = "SELECT top 10 * FROM Customers"; SqlCommand cmd = new SqlCommand(query); gvCustomers.DataSource = GetData(cmd); gvCustomers.DataBind(); } private DataTable GetData(SqlCommand cmd) { string strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString; using (SqlConnection con = new SqlConnection(strConnString)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataTable dt = new DataTable()) { sda.Fill(dt); return dt; } } } }