2012-02-01 52 views
1

我正在做一些使用.NET的数据库操作,在插入模式下使用具有隐藏字段的子元素的detailsView来存储父级的ID。它的填充为:失去对changeMode的控制?

dvChild.ChangeMode(DetailsViewMode.Insert); 
HiddenField hdParentId = (HiddenField) FindControlRecursive(Page, "hdParentId"); 
hdParentId.Value = parent.ParentId; 

这工作得很好最初 - 父用户搜索,搜索将返回父ID,子编辑器翻转到插入模式。在回寄上,我致电

dvChild.ChangeMode(DetailsViewMode.ReadOnly); 

使用dvChild回显原始插入。

但是,当用户从回发页面运行搜索时,即使控件本身在页面呈现时显示,试图找到hdParentId也会返回null。这是怎么回事?

FindControlRecursive是通过嵌套控件钻取的流行黑客攻击。 dvChild.FindControl(“hdParentId”)的可预见性也是空的。

回答

1

好吧。我感到很傻。我需要拨打

dvChild.DataBind() 

在模式更改之后,确保所有变型模式控件都将以编程方式提供。