2009-02-03 43 views
2

如果我創建用戶控件(編輯:不是Web控件/服務器控件),獲取數據綁定非常簡單。我只是添加一個datasourceID屬性。如何使用asp.net用戶控件獲取設計表面渲染和設計時間數據源選擇

在後面的代碼(VB)

Partial Public Class BandedControl 
    Inherits UserControl 

    Public Property DataSourceID() As String 
     Get 
      Return MyGridView.DataSourceID 
     End Get 
     Set(ByVal value As String) 
      MyGridView.DataSourceID = value 
     End Set 
    End Property 

End Class 

在後面的代碼(C#)

public partial class BandedControl : UserControl 
{ 

    public string DataSourceID { 
     get { return MyGridView.DataSourceID; } 
     set { MyGridView.DataSourceID = value; } 
    } 
} 

我的問題是,這打破了設計時間渲染和我也沒有得到一個下拉列表選擇我的數據源。我該如何解決這個問題。 (提示:我想我需要一個類型轉換器,但是我可以找到的所有信息都與服務器控件相關,而不是用戶控件)。

回答

2

你可以嘗試添加IDReferenceProperty屬性的屬性定義...

public partial class BandedControl : UserControl 
{ 
    [System.Web.UI.IDReferenceProperty(typeof(DataSourceControl))] 
    public string DataSourceID 
    { 
     get 
     { 
      return MyGridView.DataSourceID; 
     } 
     set 
     { 
      MyGridView.DataSourceID = value; 
     } 
    } 
} 

有關更多信息,請參見http://msdn.microsoft.com/en-us/library/system.web.ui.idreferencepropertyattribute.aspx IDReferencePropertyAttribute類。

如果這不起作用 - 我也會嘗試從DataBoundControl而不是UserControl繼承,看看是否能讓你獲得任何地方。

1

Web UserControls是在運行時動態編譯的,所以在設計時不會渲染,您要做的就是創建一個Web Custom Control。這裏最好的辦法是延長現有網絡可綁定一個控件

http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx

+0

感謝您尋找。但是,如果數據源在用戶控件中,那麼控件*將被渲染到VS2008的設計界面上(我認爲這是一個新的VS2008功能)。本文引用VS.NET(2003),所以我可能仍然可以用用戶控件做到這一點...? – 2009-02-06 18:59:03

+0

對不起,我沒有與vs2008 exp,但老實說,我認爲這可能會更容易花時間,並創建一個自定義控件,然後等待答案。 也許這將有助於http://weblogs.asp.net/scottgu/archive/2005/12/04/432319.aspx – CalvinR 2009-02-06 19:57:35

+0

有沒有迫在眉睫的需要,我開始了一個月(希望!)web項目在3月份,我目前正在做winform,我有更多的經驗,我只是感覺我的選擇。我會等待其他答案,如果它不能完成(或沒有人知道如何去做),那麼我會重新考慮。 – 2009-02-06 22:27:19

0

不知道這是否正是你想要的,但我似乎記得他們在某些dnr電視劇集中顯示類似於此的東西。

我認爲這是米格爾·卡斯特羅發作1次& 2,但它可能是一集31

的所有視頻存檔是here