Я не уверен, почему для правильного выбора выпадающего списка требуется два щелчка, но это может быть связано с проблемами упорядочения событий обратной передачи / ViewState.Одна вещь, которую вы можете рассмотреть, - это использование данных, к которым вы привязываете сетку, а не текст элементов управления в сетке.IOW, при условии, что вы привязываетесь к коллекции объектов, подобной этой:
public class ProjectSchedule
{
public string Project {get;set;}
public int CategoryId {get;set;}
public string Category {get;set;}
public string Sunday {get;set;}
public string Monday {get;set;}
public string Tuesday {get;set;}
public string Wednesday {get;set;}
public string Thursday {get;set;}
public string Friday {get;set;}
public string Saturday {get;set;}
}
Затем в обработчике событий SelectedIndexChanged
получите ваши данные следующим образом:
GridViewRow row = GridView1.SelectedRow;
ProjectSchedule ps = row.DataItem as ProjectSchedule;
if (ps != null)
{
txtSunday.Text = ps.Sunday;
// the rest of the days...
ListItem categoryItem = CategoryList.Items.FindByText(ps.Category);
if (categoryItem != null)
{
CategoryList.ClearSelection();
categoryItem.Selected = true;
}
// same with ProjectList
}
Предполагая,ваши элементы управления будут попадать в один и тот же столбец каждый раз, когда ограничивает ремонтопригодность.Например, скажем, что требования изменяются, чтобы столбцы с днями были перед столбцом Проект.Это очень много индексов, которые нужно изменить.
Было бы еще лучше, если бы у вас были какие-то категории и еще что-то проиндексировано (например, свойство CategoryId
, которое я ввел контрабандой в объект ProjectSchedule
выше), тогда выможет искать элемент по значению, а не по тексту, устраняя еще одну точку отказа.