【问题标题】:Telerik Radgrid How to retrieve textbox values from dynamically generated RadGrid columns?Telerik Radgrid 如何从动态生成的 RadGrid 列中检索文本框值?
【发布时间】:2012-03-08 21:58:56
【问题描述】:

我正在动态创建一个 RadGrid 并向其添加 GridTemplateColumns。这些列中有文本框。
将数据表绑定到网格后,在用户对文本框进行更改并单击保存按钮后,我想访问文本框的值。但我被困在获取文本框实例。我什至无法掌握 GridItems!
为了增加更多复杂性,我的 RadGrid 位于 UserControl 中,它位于(多)视图中。
这是代码。

    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。

【问题讨论】:

  • 我刚刚发现 ViewState 在 Page 的 Load 方法执行之前不会被恢复,这就是 Init 方法中项目计数始终为 0 的原因。更新了代码以在 Init 上定义结构并在 Load 上加载状态。现在它已经解决了,这会让我回到我原来的问题。 stackoverflow.com/questions/9611453/….

标签: telerik-grid datagridtemplatecolumn dynamic-columns


【解决方案1】:

对于动态生成的 radgrid,它应该在 page_init 方法中创建,并且该网格的视图状态将自动为我们恢复,我们可以在 page_load 方法中获取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 2013-12-11
    • 2016-11-12
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多