2010-02-04 7 views
1

Je me demande si nous pouvons implémenter et extraire des données de différentes sources de données dans un DataGrid. Disons par exemple que j'ai 3 procédures stockées:Plusieurs sources de données dans DataGrid (ASP.NET)

Ce que j'ai fait est de faire glisser 3 sources de données et de le configurer dans chaque procédure stockée.

procédures stockées 1er: retours @Id et @name procédures stockées 2e: retours @name, @server et @location procédures stockées 3e: retours @age et @years

et je veux seulement montrer @ id de 1st SPROC, @server de 2nd SRPOC et @age de 3rd SPROC et lier à un DataGrid.

Merci.

Répondre

4

Vous ne pouvez pas définir plusieurs sources de données sur un contrôle. Pourquoi ne pas créer une procédure stockée qui récupère toutes les informations que vous voulez en une seule fois? Ensuite, vous pouvez lier le résultat à votre DataGrid.

+0

Eh bien, je pense que je devrais dire au DBA qui a fait ces sprocs pour faire votre suggestion hehe, je me demande pourquoi il n'a aucune idée si je pouvais obtenir ces données de ses sprocs qu'il m'a jeté :), de toute façon merci ! – Sherwin

1

Je suis d'accord avec Oded. Avoir une source la rend simple et facile à gérer/déboguer. Mais si vous préférez avoir des sources de données multiplet, je remplirais un ensemble de données avec ces sources de données, générerais une vue de données à partir de cet ensemble de données (en sélectionnant les données appropriées) et lierais la vue à la grille de données. Un exemple de here

private void btnLoadData_Click(object sender, System.EventArgs e) 
{ 
    string connectionString = "server=P-III; database=programmersheaven;" + 
         "uid=sa; pwd=;"; 
    SqlConnection conn = new SqlConnection(connectionString); 
    string cmdString = "SELECT * FROM article"; 
    SqlDataAdapter dataAdapter = new SqlDataAdapter(cmdString, conn); 
    DataSet ds = new DataSet(); 
    dataAdapter.Fill(ds, "article"); 
    cmdString = "SELECT * FROM author"; 
    dataAdapter = new SqlDataAdapter(cmdString, conn); 
    dataAdapter.Fill(ds, "author"); 
    DataRelation relation = new DataRelation("ArtAuth", 
      ds.Tables["author"].Columns["authorId"], 
      ds.Tables["article"].Columns["authorId"] 
      ); 
    ds.Relations.Add(relation); 
    DataView dv = new DataView(ds.Tables["author"]); 
    dgDetails.DataSource = dv; 
} 
+0

hey merci, je vais essayer de mettre en œuvre celui-ci! Maintenant je peux dormir profondément sans penser quoi faire dans celui-ci. :) – Sherwin

1

Vous pouvez effectuer une jointure dans la requête sqldatasource à la propriété selectcommand pour sélectionner ce que vous voulez de la DB, puis accédez au datagrid.datasourceID du contrôle sqldatasource.

Questions connexes