как связать выпадающий список в gridview?
У меня есть gridview, в котором каждая строка содержит выпадающий список. Я хочу динамически связывать каждый раскрывающийся список. Может кто-нибудь сказать мне, как я могу это сделать. Заранее спасибо
- Сортировка GridView: SortDirection всегда по возрастанию
- Добавление заголовка в GridView (Android)
- разделители / разделители строк сетки андроида
- Высота Gridview снижается
- Android gridview сохраняет выбранный элемент
- Как получить значение ячейки по имени столбца не по индексу в GridView в asp.net
- GridView с двумя столбцами, шириной заливки
- GridView связан с свойствами вложенного classа
Если вы используете столбец шаблонов, вы можете связать выпадающее меню с разметкой, используя выражения привязки данных. Например,
Выше предполагается, что ваши выпадающие данные постоянны по строкам. Если он меняется, вы можете использовать выражение привязки данных, такое как
GetDropDownData будет защищенным методом в коде, который вернет данные (data.table, список, массив) для данной строки.
Вы можете использовать событие GridView.RowDataBound (или событие RowCreated) в коде для заполнения раскрывающихся списков. Например,
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; */ } }
В дополнение к предлагаемым методам вы также можете привязать свои элементы управления к своей разметке следующим образом:
Вот ваш gridview
и ваше событие RowDataBound
для gridview будет
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); } }
Связывание GridView
Ниже приведен код привязки элемента GridView с данными.
C #
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; } } } }