我已经使用一个函数动态创建了一个表行,如下所示。
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;
但它正在回归 "对象引用未设置为对象的实例。"
我认为这是因为它无法找到控件?但我不确定如何解决它。
对于添加新单元格的混乱感到抱歉......我对此有了新的认识,我不知道有更好的方法可以做到这一点。
答案 0 :(得分:0)
问题是FindControl不是递归的。您必须在TableCell实例上调用它,而不是Table本身。
TextBox amount_p = new_amount.FindControl("amount_Text") as TextBox;