在动态创建的表行C#中查找控件

时间:2014-07-16 02:35:43

标签: c# dynamic tablerow

我已经使用一个函数动态创建了一个表行,如下所示。

Table The_Table = Invoice_Table;
TableRow new_Item_Row = new TableRow();
The_Table.Rows.Add(new_Item_Row);

TableCell new_type = new TableCell();
TableCell new_item = new TableCell();
TableCell new_amount = new TableCell();

DropDownList type_List = new DropDownList();
type_List.ID = "type_List";
   ListItem Cash = new ListItem();
   Cash.Value="Cash";
   Cash.Text="Cash/Cheque";
   ListItem IVoi = new ListItem();
   IVoi.Value="IVoi";
   IVoi.Text="Invoice";
   type_List.Items.Add(Cash);
   type_List.Items.Add(IVoi);

TextBox item_Text = new TextBox();
item_Text.ID = "item_Text";

TextBox amount_Text = new TextBox();
amount_Text.ID = "amount_Text";

new_type.Controls.Add(type_List);
new_item.Controls.Add(item_Text);
new_amount.Controls.Add(amount_Text);

new_Item_Row.Cells.Add(new_type);
new_Item_Row.Cells.Add(new_item);
new_Item_Row.Cells.Add(new_amount);

然后我尝试稍后使用以下函数访问此控件

 DropDownList type_L = Invoice_Table.FindControl("type_List") as DropDownList;
 TextBox amount_p = Invoice_Table.FindControl("amount_Text") as TextBox;
 TextBox Item_T = Invoice_Table.FindControl("item_Text") as TextBox;

但它正在回归 "对象引用未设置为对象的实例。"

我认为这是因为它无法找到控件?但我不确定如何解决它。

对于添加新单元格的混乱感到抱歉......我对此有了新的认识,我不知道有更好的方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

问题是FindControl不是递归的。您必须在TableCell实例上调用它,而不是Table本身。

TextBox amount_p = new_amount.FindControl("amount_Text") as TextBox;