2011-08-05 17 views
0

タイトルとしては、SqlDataSourceは、別のaspxページで共有することができますか? 私は複数のaspxページでまったく同じsqldatasourceを持っています。これを作成してすべてのページで共有することは可能ですか?SqlDataSourceは異なるaspxページで共有できますか?

ありがとう

答えて

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; 
} 

を限り、あなたは限り、あなたはあなたのMASTER TO MasterType VirtualPath = "〜/ PATH @ <%を持っているように持っているように"%>あなたのaspxページでは、マスターで公開するすべてのプロパティを参照できます。

ハッピーコーディング。

b

+0

答えていただきありがとうございます。あなたの最初のオプションのために、私はmasterpageでsqldatasourceを作成しましたが、マスターのプロパティとしてどのように公開しますか? – sktech

+0

私はそれを得たことはありません。私はいつもsqldatasourceをマークアップページに追加しています。したがって、コードの背後に作成されたことを考えずに共有しました。あなたの大きな助けてくれてありがとう – sktech

+0

@sketch - ありがとう - あなた自身でそれを理解してうれしく思いました - あなたにしっかりとした例を与えてくれるのでしたので、他の人たちのために仕上げると思っていました...あなたのプロジェクトの残りの部分。 – Brian

0

コントロールはページに固有です。ページ間で共有するには、UserControlに配置し、UserControlのpublicプロパティを介して公開します。

0

接続文字列を意味する場合、答えはyesです。パブリック共有クラスに入れることができます。

接続が複数のページで開いている場合は、いいえ

メモリリークを防ぐには、常に接続をすぐに閉じてください。

関連する問題