2015-04-30 2 views
0

Я использую radgrid и создаю его в aspx, но при определенном действии я добавляю GridTemplateColumns в сетку.Динамически сгенерированные столбцы в radgrid исчезают после обратной передачи

private void CreateDateColumns(List<DateTime> occurenceList) 
{ 
    if (occurenceList != null && occurenceList.Count > 0) 
    { 
     int index = 1; 
     foreach (DateTime occurence in occurenceList) 
     { 
      string templateColumnName = occurence.Date.ToShortDateString(); 
      GridTemplateColumn templateColumn = new GridTemplateColumn(); 
      templateColumn.ItemTemplate = new MyTemplate(templateColumnName, index); 
      grdStudentAttendanceList.MasterTableView.Columns.Add(templateColumn); 
      templateColumn.HeaderText = templateColumnName; 
      templateColumn.UniqueName = templateColumnName; 

      index++; 
     } 
    } 
} 

private class MyTemplate : ITemplate 
{ 
    protected RadComboBox rcbAttendance; 
    private string colname; 
    private int _index; 
    public MyTemplate(string cName, int index) 
    { 
     colname = cName; 
     _index = index; 
    } 
    public void InstantiateIn(System.Web.UI.Control container) 
    { 
     rcbAttendance = new RadComboBox(); 
     rcbAttendance.Items.Add(new RadComboBoxItem("---Select---", "-1")); 
     rcbAttendance.Items.Add(new RadComboBoxItem("Present", "1")); 
     rcbAttendance.Items.Add(new RadComboBoxItem("Absent", "2")); 
     rcbAttendance.Items.Add(new RadComboBoxItem("Leave", "3")); 
     rcbAttendance.ID = "rcbAttendance" + _index; 
     container.Controls.Add(rcbAttendance); 
    } 
} 

Все в порядке с созданием, но когда я нажимаю кнопку или любой выпадающий сохранить сделать обратную передачу только динамически генерируемое содержимое столбцов исчезает, и другие столбцы остаться. Что я заметил, что столбцы все еще на месте с заголовком, но только содержимое исчезло (в моем случае содержимое является списком)

После включения viewstate для сетки появляется только текст заголовка.

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

ответ

0

При создании шаблонных столбцов программно сетка должна быть полностью сгенерирована в коде с использованием события Page_Init. Затем вы должны динамически создавать шаблоны в коде и назначать их свойствам ItemTemplate и EditItemTemplate этого столбца. Чтобы создать шаблон динамически, вы должны определить пользовательский класс, который реализует интерфейс ITemplate. Затем вы можете назначить экземпляр этого класса для свойства ItemTemplate или EditTemplateTemplate объекта GridTemplateColumn. Blockquote

Шаблоны столбцов должны быть добавлены в обработчик события Page_Init, чтобы элементы управления шаблонами можно было добавить в ViewState. Blockquote

Источник: Telerik

Основном, вы должны создать все GridTemplateColumns в Page_Init. У нас была та же проблема, и этот подход зафиксировал ее.

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