cs_plateau
Messages postés19Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 3 juillet 2008
-
18 juin 2008 à 22:10
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 2010
-
25 juin 2008 à 23:02
Bonjour,
j'espère vraiment que qq un peut m'aider la dessus car cela fait un bout de
temps que j'essais mais en vain,
alors, j'ai deux tables, 1 c'est les titres et 2 c'est les auteurs des livres
(1 à plusieurs)
dans ma page aspx j'ai créer un repeater (parent) pour afficher les titres, et
un autre repeater (child) pour afficher les auteurs correspondants,
mon but est d'afficher 5 résultats par page, le
voici mon code
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
intPageSize.Text = "5";
intCurrIndex.Text = "0";
DataBind();
}
}
protected void DataBind()
{
OleDbConnection connection = new OleDbConnection();
// mettre la connection en string pour pouvoir la recuperer dans l'adaptateur
connection.ConnectionString = "ma chaine de connection";
connection.Open();
OleDbDataAdapter cmd1 = new OleDbDataAdapter(" select * from table 1 ", connection);
OleDbDataAdapter cmd2 = new OleDbDataAdapter("select * from table 2 ", connection);
//Create and fill the DataSet.
DataSet ds = new DataSet();
int a = Convert.ToInt32(intCurrIndex.Text);
int b = Convert.ToInt32(intPageSize.Text);
cmd1.Fill(ds,a , b, "table1");
intRecordCount.Text = Convert.ToString(ds.Tables["table 1"].Rows.Count);
//Create a second DataAdapter for the Stock table.
cmd2.Fill(ds, "table 2");
//Create the relation bewtween the product and stock tables.
ds.Relations.Add("myrelation", ds.Tables["table 1"].Columns["ID_ASS"], ds.Tables["table 2"].Columns["ID_ASS"]);
//Bind the product table to the parent Repeater control, and call DataBind.
parentRepeater.DataSource = ds.Tables["table 1"];
Page.DataBind();
connection.Close();
l'erreur que j'ai est la suivante: System.ArgumentException:
Cette contrainte ne peut pas être activée, car toutes les valeurs n'ont
pas de valeurs parentes correspondantes.
et elle au niveau de : ds.Relations.Add("myrelation", ds.Tables["table 1"].Columns["ID_ASS"], ds.Tables["table 2"].Columns["ID_ASS"]);
PS: quand j'enleve le a et b de cmd1.Fill(ds,a , b, "table1"); je n'ai plus d'erreur mais il m'affiche tous les résultats dans une seule page
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 22 juin 2008 à 15:36
Bonjour,
Je ne suis pas sûr que le code dont tu pars puisse accepter les conditions de pagination que tu essaies de lui imposer.
Le problème tient au fait que si ton premier dataset est rempli avec une limitation du nombre de résultat, le second ne l'est pas : or, problème supplémentaire, avec une relation one-many, comment prévoir la limitation ?
A mon avis, puisque l'un des deux repeater est dépendant des données de l'autre, tu devrais plutôt différencier leur remplissage : n'impose la condition de pagination que sur le repeater "maître", et ensuite, il suffira de remplir le second repeater avec la relation clef de la ligne du premier repeater en prenant le premier contrôle pour source du second.
Faire les deux dans le même sous-programme me semble très difficile dans ton cas.
cs_plateau
Messages postés19Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 3 juillet 2008 18 juin 2008 à 22:23
autre precision c'est que si je met dans intPageSize un nombre superieur à nombre de resultats, tout se passe bien et il n'y a pas de bug que ce soit je met a et b comme ca
cmd1.Fill(ds,a , b, "table1");
intRecordCount.Text = Convert.ToString(ds.Tables["table 1"].Rows.Count);
//Create a second DataAdapter for the Stock table.
cmd2.Fill(ds,a, b, "table 2");
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 25 juin 2008 à 23:02
Bonsoir,
Je suis content que cela marche.
Une petite question de curiosité à laquelle tu n'es pas obligé de répondre (je m'intéresse aux questions bibliographiques) :
quel est le thème de la liste de livres ? et quel système d'indexation as-tu adopté ?