2012-03-08 2 views
0

Я динамически создаю RadGrid и добавляю к нему GridTemplateColumns. В этих столбцах есть текстовое поле.
После привязки данных к сетке после внесения пользователем изменений в текстовые поля и нажатия кнопки сохранения я хотел бы получить доступ к значениям текстового поля. Но я застрял в получении экземпляра текстового поля. Я даже не мог схватить GridItems!
Чтобы добавить дополнительную сложность, мой RadGrid находится в UserControl, который находится в (мульти) представлении.
Heres код.Telerik Radgrid Как получить значения текстового поля из динамически генерируемых столбцов RadGrid?

protected void Page_Init(object sender, EventArgs e) 
    { 
     DefineGridStructure();    
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (RadGrid1 != null && RadGrid1.Items.Count > 0) 
     { 
      string strtxt = ((TextBox)RadGrid1.Items[1]["ProductGroup1"].Controls[0]).Text;//For starters, load one control and check it's state 
     } 
    } 
    private void DefineGridStructure() 
    { 
     RadGrid1 = new RadGrid(); 
     RadGrid1.AutoGenerateColumns = false; 
     RadGrid1.ShowHeader = true; 
     RadGrid1.NeedDataSource += RadGrid1_NeedDataSource; 
     foreach(GridColumn qtyColumn in BuildGridQtyColumns(PaxColumnCount)) 
     { 
      RadGrid1.MasterTableView.Columns.Add(qtyColumn); 
     } 
     //Add grid to page 
     phRadGrid.Controls.Add(RadGrid1); 
    } 
    private List<GridColumn> BuildGridQtyColumns(int count) 
    { 
     List<GridColumn> qtyColumns = new List<GridColumn>(); 
     for (int i = 1; i <= count; i++) 
     { 
      string qtyColumnName = string.Format("ProductGroup{0}", i); 
      GridTemplateColumn qtyColumn = new GridTemplateColumn(); 
      qtyColumn.ItemTemplate = new GridNumberTemplate(qtyColumnName);//Creates a textbox control 
      qtyColumn.UniqueName = qtyColumnName; 
      qtyColumn.HeaderText = "Qty"; 
      qtyColumn.HeaderStyle.Width = Unit.Pixel(60); 
      qtyColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; 

      qtyColumns.Add(qtyColumn); 
     } 
     return qtyColumns; 
    } 

Поскольку мой контроль в поле зрения, это Page_Init называется более чем один раз для каждого действия, которое включает в себя эту точку зрения.

+0

Я только что понял, что ViewState не будет восстановлен до тех пор, пока не будет выполняться метод Load Loader, и это причина, по которой элемент Item всегда равен 0 в методе Init. Обновлен код для определения структуры в Init и состоянии загрузки на Load. Теперь, когда это будет решено, это вернет меня к моей первоначальной проблеме. http://stackoverflow.com/questions/9611453/telerik-radgrid-can-we-save-a-unique-value-against-each-column. –

ответ

0

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

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