Telerik Radgrid如何从动态生成的RadGrid列中检索textbox值?
-
09-12-2019 - |
题
我正在动态创建一个RadGrid并添加 GridTemplateColumns
对它。这些列中有textbox。
将datatable绑定到网格后,用户对文本框进行更改并单击保存按钮后,我想访问文本框值。但我被困在获取textbox实例。我连网格都抓不到!
为了增加更多的复杂性,我的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都被调用不止一次。
解决方案
对于动态生成的radgrid,它应该在page_init方法中创建,并且该网格的viewstate将自动为我们恢复,我们可以在page_load方法中获得。
不隶属于 StackOverflow