2011-07-21 47 views
0

在我的應用程序中,我有大量的頁面重複非常類似的網格,並且每個頁面都將在最左邊的列中包含一個「DropDownExtender」ajax控件,該控件將包含許多指向該行其他頁面的鏈接。儘管有頁面特定參數,我是否可以使用UserControl重用DropDownExtender?

現在,我想通過將此DropDownExtender作爲用戶控件來避免代碼重複。然而,這一個重要的方面是控制將包含被與該特定行的鏈接的一些隱藏的字段/值 - 例如,我有

<asp:HiddenField ID="hdnID" runat="server" Value='<%# Bind("ID")' /> 

我假設這是行不通的 - 我如何以有效的方式將值傳遞給用戶控件?

+1

「我想避免代碼重用」。你的意思是相反的,不是嗎? :) – Dante

回答

0

如果您在用戶控件中擁有公共屬性,則可以使用代碼或標記來設置它,就像您使用上述隱藏字段一樣。

您可能還需要:

[Bindable(BindableSupport.Yes)] 

如果你需要的數據綁定支持。

0

如果我對你有所幫助 - 你需要爲每個控件擁有唯一的標識符,對嗎?如果我的權利,你可以做下一個:

UserControl1.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication2.WebUserControl1" %> 
<asp:HiddenField ID="hdnID" runat="server" Value='<%# Bind("ID")' /> 

和UserControl1.cs:

namespace WebApplication2 
{ 
    public partial class WebUserControl1 : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     public string HiddenFildProperty 
     { 
      get { return hdnID.Value; } 
      set { hdnID.Value = value; } 
     } 
    } 
} 

,比你可以在任何模板控件使用該控件,如直放站,像這樣:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <mycontrols:WebUserControl1 ID="myControl1" HiddenFildProperty='<%#Bind("ID") %>'/> 
    </ItemTemplate> 
</asp:Repeater> 

同樣,你可以綁定你的控件中的任何其他屬性,例如可怕的可怕在你的DropDownExtander中鏈接。

相關問題