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。
我想通了,不会的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