2009-10-14 2 views
0

Недавно я изменил способ работы соединения с моим веб-приложением, и теперь я сталкиваюсь с тем, что я не понимаю.Закрытие соединения после привязки репитера

У меня есть страница, вызывающая функцию «ItemGet» в Page_Load, и она отлично работает, когда нет данных в первом повторителе (Repeater1). Когда я нажимаю кнопку, которая перезагружает страницу разными данными (я знаю, что есть данные в ретрансляторе), соединение автоматически закрывается сразу после того же самого повторителя (повторитель 1). Проблема состоит в том, что после повторения (RepeaterTopTen) есть еще один повторитель, которому требуется такое же соединение. Я закрыл вручную соединение сразу после вызова этой функции, но по крайней мере мне нужно, чтобы соединение оставалось открытым во время всей функции.

Неужели кто-то из вас знает причину, по которой он закрыл себя и что я могу сделать, чтобы он не закрылся в это время?

Вот код:

private void ItemsGet(string csCategory, string csTimeFrame) 
{ 
    DataSet data; 

    if (csCategory == null) 
    { 
     data = m_database.GetPost(Tools.GetPostLang(), Session["TimeFrame"].ToString()); 
     Page.Title = m_database.GetTranslation(509); 
    } 
    else 
    { 
     data = m_database.GetPost(Convert.ToInt32(csCategory), Tools.GetPostLang(), Session["TimeFrame"].ToString()); 
     Page.Title = m_database.GetTranslation(508) + m_database.GetCategoryName(Convert.ToInt32(csCategory)); 
    }   

    // Populate the repeater control with the Items DataSet 
    PagedDataSource objPds = new PagedDataSource(); 
    objPds.DataSource = (DataView)(data.Tables[0].DefaultView); 

    // Indicate that the data should be paged 
    objPds.AllowPaging = true; 

    // Set the number of items you wish to display per page 
    objPds.PageSize = 5; 

    // Set the PagedDataSource's current page 
    if (CurrentPage != 0) 
     objPds.CurrentPageIndex = CurrentPage; 
    else 
     objPds.CurrentPageIndex = 0; 

    lblCurrentPage.Text = m_database.GetTranslation(423) + (CurrentPage + 1).ToString() + m_database.GetTranslation(422) + objPds.PageCount.ToString(); 

    // Disable Prev or Next buttons if necessary 
    btnPrev.Enabled = !objPds.IsFirstPage; 
    btnNext.Enabled = !objPds.IsLastPage; 

    Repeater1.DataSource = objPds; 
    Repeater1.DataBind(); 

    DataSet dataTopTen = m_database.GetTopTenUser(); 
    RepeaterTopTen.DataSource = dataTopTen; 
    RepeaterTopTen.DataBind(); 

} 

ответ

0

Потому что никто не ответить на этот вопрос, я создал функцию, которая проверить, если соединение открыто, и если нет, то открыть его. Я внимательно проверил, что он закрывается каждый раз.

0

Если вы объявляете свой объект базы данных и вызываете метод open в соединении с базой данных в вашем методе Page_Load, соединение с базой данных будет оставаться открытым в течение всего жизненного цикла вашей страницы. Когда ваше соединение с базой данных объявлено в этой функции, объект базы данных выходит из области действия и закрывается, когда заканчивается ваша функция.

Смежные вопросы