2009-10-14 7 views
0

J'ai récemment changé la façon dont la connexion fonctionnait sur mon application Web et maintenant je fais face à quelque chose que je ne comprends pas.Fermeture de la connexion après la liaison de données du répéteur

J'ai une page qui appelle une fonction appelée "ItemGet" dans le Page_Load et cela fonctionne parfaitement quand il n'y a pas de données dans le premier répéteur (Repeater1). Lorsque je clique sur un bouton qui recharge la page avec des données différentes (je sais qu'il y a des données dans le répéteur), la connexion est automatiquement fermée juste après ce même répéteur (répéteur 1). Le problème, c'est qu'il y a un autre répéteur juste après (RepeaterTopTen) qui a besoin de la même connexion. J'ai fermé manuellement la connexion juste après l'appel à cette fonction mais au moins j'ai besoin que la connexion reste ouverte pendant toute la durée de la fonction. Est-ce que l'un d'entre vous connaît la raison pour laquelle il s'est fermé et ce que je peux faire pour l'empêcher de fermer à ce moment-là?

Voici le code:

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(); 

} 

Répondre

0

Parce que personne ne répondre à cette question, je crée une fonction qui vérifie si la connexion est ouverte et sinon, il l'ouvrir. J'ai vérifié soigneusement qu'il était fermé à chaque fois.

0

Si vous déclarez votre objet de base de données et appelez la méthode ouverte sur la connexion de base de données dans votre méthode Page_Load, la connexion à la base de données restera ouverte pendant tout le cycle de vie de votre page. Avec la connexion de votre base de données déclarée dans cette fonction, l'objet de base de données est hors de portée et se ferme lorsque votre fonction se termine.

Questions connexes