У меня есть GridView с adrpDownList в EditItemTemplate. Исходные данные находятся в этикетке и в режиме редактирования передаются в ddl. При нажатии кнопки редактирования я получил исключение: System.ArgumentOutOfRangeException: 'ddlCities' имеет SelectedValue, которое является недопустимым, поскольку оно не существует в списке элементов. Я нашел аналогичный вопрос здесь и адаптировал код к своим потребностям следующим образом (где город — это строка, полученная из метки в itemTemplate gridView):
protected void gvClients_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (!string.IsNullOrEmpty(city))
{
ddlTemp = (DropDownList)e.Row.Cells[7].FindControl("ddlCities");
if (ddlTemp != null)
{
ListItem item = ddlTemp.Items.FindByValue(city);
if (item != null)
{
item.Selected = true;
}
}
}
}
Чтобы заставить его работать, мне пришлось стереть SelectedValue = ‹%# Bind("City") %>, в противном случае вышеуказанное исключение возникло снова. Но теперь я хочу обновить свои данные в соответствии со значением, выбранным в ddl, и мне это не удается, потому что ddl не привязан ни к чему в источнике данных gridView. Буду очень признателен за помощь.