[英]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.