回答我自己的帖子......我从 asp.net 论坛得到了一些很棒的内容,并决定在这里发布解决方案:复制帮助我的解释:
希望这将为可能遇到相同问题的其他用户解决一些问题。
最好的,JY
Blockquote 嗨,JY,
简短的回答是,在编译 Bind 语句时,为插入/更新提取值存在一些限制。如果 FormView 中的控件在另一个命名容器中(TabContainer 和 TabPanel 都是命名容器),那么编译器无法解析如何从 TextBox 中提取值。我在我的博客http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx对此有更详细的讨论。
为了解决这个问题,您需要手动提取值,例如:
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e) { // 获取对控件 TextBox 的引用 LastNameTextBox= FormView1.FindControl("TabContainer1").FindControl("TabPanel1").FindControl("LastNameTextBox") as TextBox;
// Set update parameters in datasource
ObjectDataSource1.UpdateParameters["LastName"].DefaultValue = LastNameTextBox.Text;
}
由于 FindControl 仅搜索当前命名容器,因此您需要深入挖掘每个命名容器(FormView、TabContainer 和 TabPanel)才能找到 TextBox。
希望有帮助。
亚伦
块引用