使用TemplateField和UserControl自定义GridView

时间:2014-03-28 05:38:38

标签: c# asp.net gridview user-controls custom-controls

我有一个自定义gridview实现,它扩展了ASP.Net Gridview以在我的应用程序中执行一些特定的逻辑。

我已将必要的控制寄存器添加到web.config文件中,并将控件添加到UserControl中。

<%@ Register TagPrefix="uc1" Namespace="MyApp.CustomControls" %>
<uc1:CustomGridView ID="userlist" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="ckbIsDefault" runat="server"/>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="UserName" SortExpression="UserName" />
        <asp:BoundField DataField="FullName" SortExpression="FullName" />
    </Columns>
</uc1:CustomGridView>

当我查看由Visual Studio为usercontrol自动生成的.designer.cs文件时,它会声明其中的CheckBox元素。当我使用ASP.Net的gridview而不是我的自定义gridview时,这不会发生。

应用程序编译并运行正常。但我对不必要的实地宣言感到恼火。即使我手动删除该字段,它也会在ASCX文件中进行任何更改后立即显示。

我在自定义gridview实现中缺少属性或其他内容吗?

1 个答案:

答案 0 :(得分:0)

很遗憾没人能给我一个解决这个问题的方法。但经过一段时间的嘲笑2天后,发现了问题。正是这个属性,我添加到CustomGridView类。

ParseChildren(true,DefaultProperty = "Columns")

但不知道,为什么删除它解决了这个问题。