В настоящее время я получил GridView, содержащий несколько текстовых значений, из которых несколько превращаются в DropDownLists после нажатия кнопки «Изменить».Это требует от меня доступа к текущему текстовому значению ячейки и установки SelectedIndex DropDown соответствующим образом после нажатия кнопки «Изменить».Это работает для ... ну, половина строк, так как только у тех есть RowStyle "Edit", у других есть "Alternate | Edit", что является неприятностью, так как я действительно не требую эту функцию.
Вот мой код:
protected void gridVariables_RowDataBound(object sender, GridViewRowEventArgs e)
{
//this only works at RowIndex 0, 2, 4 etc.
if (e.Row.RowState == DataControlRowState.Edit)
{
switch (((DataRowView)e.Row.DataItem).Row.ItemArray[2].ToString())
{
case "True":
((CheckBox)e.Row.Cells[0].Controls[1]).Checked = true;
break;
case "False":
((CheckBox)e.Row.Cells[0].Controls[1]).Checked = false;
break;
default:
break;
}
((DropDownList)e.Row.Cells[3].Controls[1]).Items.FindByValue(((DataRowView)e.Row.DataItem).Row.ItemArray[3].ToString()).Selected = true;
}
}
GridView состоит из TemplateFields с метками в ItemTemplate и CheckBox (index 0) или DropDownList (index 3) в качестве EditItemTemplate, остальные"нормальные" BoundFields.По какой-то причине я чувствую, что не могу опубликовать разметку asp без полного уничтожения форматирования этого сообщения.
Итак, есть ли способ улучшить мою структуру программирования, чтобы она работала как с «Edit», так и с «Edit»Изменить | Альтернативные "строки или отключить функцию чередующихся строк?
Спасибо,
Деннис