2010-01-06 3 views
0

Я довольно новичок в C# комбо с ASP.NET, поэтому я попытаюсь быть настолько ясным, насколько могу, с моим объяснением.Ячейки в gridview теряют контроль над событием RowUpdating

Я использую GridView для отображения некоторых столбцов и строк, которые находятся в базе данных. Это отлично работает. Потому что я хотел динамически добавлять столбцы из списка имен. Скажем, у нас есть список с 5 именами в нем, затем он динамически создает столбец для каждого имени в GridView. Вот код, чтобы показать то, что я делаю:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //Create columns for each student 
     List<Student> allStudents = new Eetlijst.Business.Students().GetAll(); 
     allStudents.Reverse(); 

     foreach (Student student in allStudents) 
     { 
      StudentBoundField studentField = new StudentBoundField(); 
      studentField.HeaderText = student.Naam; 
      MaaltijdGrid.Columns.Insert(4, studentField); 
     } 

     ShowDataInGrid(DateTime.Now.Month, DateTime.Now.Year); 

Там какой-то другой материал в там, что это не важно. ShowDataInGrid выглядит следующим образом:

public void ShowDataInGrid(int maand, int jaar) 
{ 
    List<Maaltijd> allMaaltijden = new Eetlijst.Business.Maaltijden().GetByMonthAndYear(maand, jaar); 
    Session.Contents.Add("maaltijden", allMaaltijden); 

    MaaltijdGrid.DataSource = allMaaltijden; 
    MaaltijdGrid.DataBind(); 
} 

Как создать динамические столбцы для каждой строки? Я создаю их с помощью события DataBound. Поэтому, когда привязка данных GridView, столбцы заполняются данными. Существует также проверка внутри, чтобы увидеть, находится ли строка в режиме редактирования или нет. Поэтому, когда я нажимаю кнопку редактирования рядом со строкой, строка отлично подходит в режиме редактирования. Код, который я создал, добавляет элемент управления TextBox в ячейку. Когда я заполняю значение и нажимаю кнопку «Обновить», он больше не может найти никаких элементов управления, поэтому я не могу получить введенное значение. Элемент управления все еще присутствует в DataBound, когда я положил точку останова после него. Но как только я нажимаю кнопку «Обновить», все элементы управления ячейками исчезают.

Я искал в Интернете, и все, что я нашел, это то, что оно имеет какое-то отношение к приложению, запускающему обратную передачу, прежде чем он достигнет метода RowUpdating.

Итак, как я могу позволить элементам управления, которые я добавил в ячейку, когда она находится в режиме редактирования?

Если кому-то нужен код, находящийся внутри события DataBound, я отправлю его.

ответ

1

Динамические элементы управления или столбцы необходимо воссоздавать при каждой загрузке страницы из-за способа управления работой. Динамические элементы управления не сохраняются, поэтому вам необходимо перезагрузить их на каждой обратной стороне страницы; однако для этих элементов управления будет сохранено viewstate.

HTH.

0

Вызов этой функции ShowDataInGrid (DateTime.Now.Month, DateTime.Now.Year); в вашем

Page_Init event.

Вы получите контроль, а также значение.

Смежные вопросы