2011-08-05 34 views

回答

1

當然。如果你的意思是共享的,就像在所有的頁面中使用相同的SqlDataSource一樣,創建一個母版頁並把數據源放在主文件中。在代碼隱藏中,將其作爲主控的屬性公開。從那裏,你可以從使用主的任何頁面引用它。

第二個方案 - 創建一個基Page類:

public class MyPage : Page 
{ 
     private SqlDataSource mDataSource; 

     public override void OnLoad(EventArgs e) 
     { 
      base.OnLoad(e); 
      // some code to init your data source - depending on your 
      // implementation, this may need to be in OnInit instead 
     } 

     public SqlDataSource DataSource 
     { 
      get { return mDataSource; } 
     } 
} 

在這種情況下,您創建一個新頁面的任何時間,去後面的代碼,並從實現頁面到我的頁面更改宣言書。所有實現MyPage的頁面都有一個SqlDataSource成員,儘管每個頁面都有自己的實例,所以這不是真的「共享」同一個SqlDataSource。

任何選項都可以讓你想要去的地方,我想。

UPDATE:海報請求作爲主的屬性暴露在的一個例子:給定一個母版頁與

以下:

<asp:SqlDataSource runat="server" ID="mDataSource" ... the rest of your properties .... /> 
<asp:ContentPlaceHolder runat="server" ID="MainContent"/> 

在代碼隱藏用於主,定義屬性:

public class SiteMaster : System.Web.UI.MasterPage 
{ 
    public SqlDataSource MasterDataSource 
    { 
     get { return mDataSource; } 
    } 

    // the rest of your master page's codebehind 
} 

在您定義使用母版頁的頁面,添加@Page聲明如下如下:

<%@ MasterPage VirtualPath="~/site.master"%> 

現在,在代碼隱藏該頁面,你可以參考一下:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlDataSource ds = this.Master.MasterDataSource; 
} 

只要你有,只要你有一個<%@的MasterType VirtualPath =「〜/ PATH TO YOUR MASTER 「%>在你的aspx頁面中,你可以引用你在master中公開的任何屬性。

快樂編碼。

B

+0

感謝您的回答。對於你的第一個選項,我在masterpage上創建了sqldatasource,但是我如何將它作爲master的屬性公開? – sktech

+0

沒關係我知道了,我總是將sqldatasource添加到標記頁面,所以不要想到在代碼中創建並共享它。謝謝你的大力幫助 – sktech

+0

@sketch - 謝謝 - 很高興你自己想出了它 - 正在給你一個堅實的例子,所以我認爲我會爲其他人完成...祝你好運你的項目的其餘部分。 – Brian

0

控件特定於頁面。跨頁面共享它將其放在UserControl中,然後通過UserControl的公共屬性公開它。

0

如果你的意思是連接字符串,答案是肯定的。你可以把它放在公共共享課堂上。

如果您指的是在多個頁面中打開連接。您應該總是儘快關閉連接以避免內存泄漏。

相關問題