我正在扩展tellerick RadGrid控件,为它提供一个可选的CustomSearchControl。
protected override void CreateChildControls()
{
this.Controls.Add(CustomSearchControl);
base.CreateChildControls();
this.Controls.Add(CustomSearchControl);
}
似乎base.CreateChildControls()必须在其中有一个清晰的控件调用,因为第一个CustomSearchControl消失了。
我尝试了这个:
protected override void CreateChildControls()
{
base.CreateChildControls();
this.Controls.AddAt(0,CustomSearchControl);
this.Controls.Add(CustomSearchControl);
}
但是它会创建一个视图状态错误......因为没有控件被添加到视图状态,并且插入正在破坏控件集合的层次结构。
答案 0 :(得分:1)
我刚刚注意到这已经打开了很长时间。我想我再也没有回来说我发现了我懊恼的来源。基本上,RadGrid中的CreateChildControls方法有两个定义。我需要覆盖的那个有一个int返回签名。一旦我使用了该方法而不是默认的void方法,控件就被成功地添加到了viewstate中,并且所有这些都适合于这个世界。