У меня есть сетка с чекбоксом и выпадающим списком.
Флажок по умолчанию не установлен.Раскрывающийся список по умолчанию отключен.
В режиме редактирования вида сетки, когда пользователь нажимает флажок, я хочу, чтобы раскрывающийся список стал активным.Если бы я мог сделать это на стороне клиента, это было бы здорово, если нет, я бы хотел сделать это на стороне сервера, БЕЗ необходимости нажимать кнопку обновления и затем редактировать снова.
Это на C #
Спасибо!
То, что я пробовал:
Grdiview основан на источнике данных, поэтому первоначально я попытался основать включенное значение раскрывающегося списка на данных Evalфлажок datavalue.Однако для этого необходимо установить флажок, нажать кнопку «Обновить», а затем изменить для включения ddl.Тогда я подумал, что, возможно, autopostback позволит всем пользователям не нажимать кнопку «Обновить», а затем редактировать снова.Это не сработало.Однако, что я действительно хочу это решение на стороне клиента.Я думаю, что это должно работать так, и событие на флажке должно фактически включать раскрывающийся список, я не думаю, что раскрывающийся список может прослушивать флажок, который нужно проверить.Однако я не знаю, как ссылаться на элемент управления из другого элемента управления в коде asp.Так что, возможно, я бы сказал что-то вроде OnCheckChanged = if Checked then ddl.enabled = true?
Но я не уверен, как это написать, и я не знаю, могу ли я заставить это событие флажка быть оцененным на стороне клиента.
@ Tim - Я пытался это сделать:
в событии, связанном с строкой строки:
CheckBox chk = e.Row.FindControl("checkbox1") as CheckBox;
DropDownList ddl = e.Row.FindControl("dropdownlist1") as DropDownList;
chk.Attributes.Add("onclick", "document.getElementById('" + ddl.ClientID + "').enabled = this.checked;");
Когда я нажимаю edit, этот код ПОЛУЧИЛСЯ, так что событие onclick БЫЛО добавлено, чтобы установить флажок,Но когда я нажимаю флажок, раскрывающийся список не становится активным.
Спасибо, Тим!Это рабочее решение.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)\
{
if ((row.RowType == DataControlRowType.DataRow) && ((row.RowState & DataControlRowState.Edit) > 0))
CheckBox chk = e.Row.FindControl("checkbox1") as CheckBox;
DropDownList ddl = e.Row.FindControl("dropdownlist1") as DropDownList;
chk.Attributes.Add("onclick", "document.getElementById('" + ddl.ClientID + "').disabled = !this.checked;");
}