2015-05-04 1 views
0

я получаю эту ошибкуНе удалось загрузить дерево управления viewstate.The, в который ViewState загружается должен соответствовать дерево CNTRL, который был использован для сохранения ViewState во

«Не удалось загрузить ViewState. Контроль дерева в который является загружаемым , должен совпадать с деревом управления, которое использовалось для сохранения во время предыдущего запроса . Например, при добавлении элементы управления, добавленные во время обратной связи, должны соответствовать типу и положению элементов управления добавляется во время первоначального запроса . "

, когда я пытаюсь отправить страницу, где я применил некоторую логику для строки привязки GridView, чтобы изменить RowSpan. При комментировании этого события ошибок нет.

вот код:

int firstRow; 
    string previousCat; 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 

     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      var drv = e.Row.DataItem as QCParameters; 

      if (previousCat == drv.AuditTypeValue) 
      { 
       //If it's the same category as the previous one 
       //Increment the rowspan 
       if (GridView1.Rows[firstRow].Cells[0].RowSpan == 0) 
       { 
        GridView1.Rows[firstRow].Cells[0].RowSpan = 2; 
        GridView1.Rows[firstRow].Cells[5].RowSpan = 2; 
       } 
       else 
       { 
        GridView1.Rows[firstRow].Cells[0].RowSpan += 1; 
        GridView1.Rows[firstRow].Cells[5].RowSpan += 1; 
       } 
       //Remove the cell 
       if (e.Row.Cells.Count > 5) 
        e.Row.Cells.RemoveAt(5); 
       e.Row.Cells.RemoveAt(0); 
      } 
      else //It's a new category 
      {     
       e.Row.VerticalAlign = VerticalAlign.Top; 
       //Maintain the category in memory 
       previousCat = drv.AuditTypeValue; 
       firstRow = e.Row.RowIndex; 
      } 
     } 
    } 

ответ

0

Проблема заключается в том, что вы удаление клеток и чем во время обратной передачи (когда дерево управления воссоздано) он не соответствует и ViewState не может быть загружен. Одним из возможных решений было бы «спрятать» ячейки, установив: e.Row.Cells[5].Visible = false;
Не видимые элементы управления не будут отображаться, но все равно будут частью дерева управления страницей.

+0

Спасибо за ваш ответ .. e.Row.Cells [5] .Visible = false; работал лучше для меня. –

+0

@BhaweshPaliwal Совершенно верно. Это то, о чем я думал. – Magnus

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