Ячейки в gridview теряют контроль над событием RowUpdating - PullRequest
0 голосов
/ 06 января 2010

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

Я использую 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, я опубликую его.

Ответы [ 2 ]

1 голос
/ 06 января 2010

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

НТН.

0 голосов
/ 18 января 2010

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

Page_Init событии.

Вы получите элемент управления и также значение.

...