2012-03-08 50 views
0

我正在动态创建一个RadGrid并将它添加到GridTemplateColumns。这些列中有文本框。
将数据绑定到网格后,用户更改文本框并单击保存按钮后,我想访问文本框的值。但我被困在获取文本框实例。我甚至无法抓住GridItems!
为了增加更多的复杂性,我的RadGrid在UserControl中,它处于(多)视图中。
继承人的代码。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恢复到网页的加载方法执行和多数民众的原因项目计数总是0 Init方法。更新了代码以在Load上定义Init和Load状态上的结构。现在它解决了,这会让我回到我原来的问题。 http://stackoverflow.com/questions/9611453/telerik-radgrid-can-we-save-a-unique-value-against-each-column。 – 2012-03-09 00:47:14

回答

0

对于动态生成的radgrid控件,它应该在page_init方法和视图状态对于该网格创建会自动恢复对我们来说,我们可以在Page_Load方法弄个。