作爲標題說的是SqlDataSource可以跨不同的aspx頁面共享嗎? 我在多個aspx頁面上有完全相同的sqldatasource,是否可以創建一個併爲所有頁面共享。SqlDataSource可以跨不同的aspx頁面共享嗎?
謝謝
作爲標題說的是SqlDataSource可以跨不同的aspx頁面共享嗎? 我在多個aspx頁面上有完全相同的sqldatasource,是否可以創建一個併爲所有頁面共享。SqlDataSource可以跨不同的aspx頁面共享嗎?
謝謝
當然。如果你的意思是共享的,就像在所有的頁面中使用相同的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
控件特定於頁面。跨頁面共享它將其放在UserControl中,然後通過UserControl的公共屬性公開它。
如果你的意思是連接字符串,答案是肯定的。你可以把它放在公共共享課堂上。
如果您指的是在多個頁面中打開連接。您應該總是儘快關閉連接以避免內存泄漏。
感謝您的回答。對於你的第一個選項,我在masterpage上創建了sqldatasource,但是我如何將它作爲master的屬性公開? – sktech
沒關係我知道了,我總是將sqldatasource添加到標記頁面,所以不要想到在代碼中創建並共享它。謝謝你的大力幫助 – sktech
@sketch - 謝謝 - 很高興你自己想出了它 - 正在給你一個堅實的例子,所以我認爲我會爲其他人完成...祝你好運你的項目的其餘部分。 – Brian