Можно ли использовать SqlDataSource на разных страницах aspx? - PullRequest
0 голосов
/ 05 августа 2011

как говорится в заголовке: SqlDataSource может использоваться на разных страницах aspx?У меня точно такой же sqldatasource на нескольких страницах aspx, можно ли создать один и поделиться для всех страниц.

спасибо

Ответы [ 3 ]

1 голос
/ 05 августа 2011

Конечно.Если вы действительно имеете в виду общий доступ, так как на всех страницах используется один и тот же SqlDataSource, создайте мастер-страницу и поместите источник данных в мастер.В коде, представьте его как свойство мастера.Оттуда вы можете ссылаться на него с любой страницы, которая использует мастер.

Второй вариант - создать базовый класс страницы:

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

В этом случае, в любое время, когда вы создаете новую страницуперейдите к коду и измените объявление с реализации Page на MyPage.Все страницы, которые реализуют MyPage, будут иметь член SqlDataSource, хотя каждая из них будет иметь свой собственный экземпляр, так что на самом деле это не «общий доступ» к одному и тому же SqlDataSource.

Любой из вариантов, я думаю, приведет вас туда, куда вы хотите пойти.

ОБНОВЛЕНИЕ: Плакат запросил пример экспонирования в качестве свойства мастера:

Для мастер-страницы со следующим:

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

В коде дляmaster, определите свойство:

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, вы можетессылаться на любые свойства, которые вы выставляете в мастере.

Счастливое кодирование.

B

0 голосов
/ 05 августа 2011

Если вы имеете в виду строку подключения, ответ - да.Вы можете поместить его в общедоступный общий класс.

Если вы имеете в виду, что соединение открыто на нескольких страницах.

Вы должны всегда закрывать соединение как можно скорее, чтобы избежать утечек памяти.

0 голосов
/ 05 августа 2011

Элементы управления относятся к конкретным страницам. Чтобы разделить его между страницами, поместите его в UserControl, а затем предоставьте его через открытое свойство UserControl.

...