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