繁体   English   中英

用户控件属性?

[英]User Control Properties?

我可以建立一个基本上像“ MasterPage”一样工作的控件吗?

我的意思是说,我在多个页面中都有一个这样的网格:

<asp:UpdatePanel ID="AnnouncementsPanel" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:GridView ID="AnnoucementsGrid" runat="server" AutoGenerateColumns="false" DataKeyNames="Id" >
            <Columns>
                <asp:BoundField DataField="Title" HeaderText="Title" />
                <asp:BoundField DataField="Created" HeaderText="Date" />
                <asp:BoundField DataField="Modified" HeaderText="Last Modified" />
                <asp:ButtonField ButtonType="Button" Text="Process" CommandName="Process" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

我想构建一个控件来处理后面的大多数代码,但是在每种情况下,我都需要声明性地声明网格的列。


有没有办法创建这样的控件?

<uc:CrudGrid ID="AnnouncementsCrud" runat="server">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" />
        <asp:BoundField DataField="Created" HeaderText="Date" />
        <asp:BoundField DataField="Modified" HeaderText="Last Modified" />
        <asp:ButtonField ButtonType="Button" Text="Process" CommandName="Process" />
    </Columns>
</uc:CrudGrid>

或事件更好:

<uc:CrudGrid ID="AnnouncementsCrud" runat="server">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" />
        <asp:BoundField DataField="Created" HeaderText="Date" />
        <asp:BoundField DataField="Modified" HeaderText="Last Modified" />
    </Columns>
</uc:CrudGrid>

也许必须将标签命名为“ Fields”,但是能够放下按钮,以便可以在UC的代码隐藏中使用它?

对于对此<3

找到了我想要的确切解决方案:

    [DefaultValue((string)null)]
    [Editor(typeof(System.Web.UI.Design.WebControls.DataControlFieldTypeEditor), typeof(UITypeEditor))]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public DataControlFieldCollection Columns
    {
        get { return Grid.Columns; }
    }

这样,我可以在自己的用户控件中公开网格中的列,并从标记中编辑字段,从而在UC中保留常规功能

取决于您希望它有多积极:-)您可以始终构建自己的控件来执行此操作。 那是一种选择。

另一个选择是创建一个附加到网格的辅助对象,并使每个网格保持独立。

第三种选择是使用通用代码创建用户控件,并通过该用户控件以编程方式向网格中添加列。

HTH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM