Exec sp_executesql N'SELECT Pub_Id, Title, Price FROM Titles; SELECT Pub_ID, Pub_Name FROM Publishers' |
daTest.Fill(dsTest, "Titles") dsTest.Tables[1].TableName = "Publishers" |
CREATE PROCEDURE [dbo].[TitlesPerPublisher] AS Begin SELECT Pub_Id, Title, Price FROM Titles SELECT Pub_ID, Pub_Name FROM Publishers End |
CommandType.StoredProcedure : daHDAta = new SqlDataAdapter(sSQLCmd, cnstring) dahData.SelectCommand.CommandType = CommandType.StoredProcedure |
public void Add(DataRelation); public virtual DataRelation Add(DataColumn, DataColumn); public virtual DataRelation Add(DataColumn[], DataColumn[]); public virtual DataRelation Add(string, DataColumn, DataColumn); public virtual DataRelation Add(string, DataColumn[], DataColumn[]); public virtual DataRelation Add(string, DataColumn, DataColumn, bool); public virtual DataRelation Add(string, DataColumn[], DataColumn[], bool); |
dsTest.Relations.Add("PubTitles", dsTest.Tables["Publishers"].Columns["Pub_ID"], dsTest.Tables["Titles"].Columns["Pub_ID"]) |
public DataRow[] GetChildRows(DataRelation); public DataRow[] GetChildRows(string); public DataRow[] GetChildRows(DataRelation, DataRowVersion); public DataRow[] GetChildRows(string, DataRowVersion); |
foreach(DataRow drPublisher in dtPublishers.Rows) { Console.WriteLine(drPublisher["Pub_Id"] + "\t" + drPublisher["Pub_Name"]); Console.WriteLine("====================="); foreach(DataRow drTitle in drPublisher.GetChildRows("PubTitles")) { Console.Write(drTitle["Title"] + "\t"); Console.Write((drTitle["price"].ToString() != null ? drTitle["price"] : "n/a")); } } |
DataRelation drPubsTitles = dsHData.Relations.Add("PubTitles", dtPublishers.Columns["Pub_ID"], dsHData.Tables["Titles"].Columns["Pub_ID"]); foreach(DataRow drPublisher in dtPublishers.Rows) { Console.WriteLine(drPublisher["Pub_Id"] + "\t" + drPublisher["Pub_Name"]); Console.WriteLine("====================="); foreach(DataRow drTitle in drPublisher.GetChildRows(drPubsTitles)) { Console.Write(drTitle["Title"] + "\t"); Console.Write((drTitle["price"].ToString() != null ? drTitle["price"] : "n/a")); } } |
public class DataView : MarshalByValueComponent, IBindingList, IList, ICollection, IEnumerable, ITypedList, ISupportInitialize |
dtPublishers.DefaultView.RowFilter="Pub_ID < 2000"; |
dtPublishers.DefaultView.Sort="PUB_ID Desc"; |
foreach(DataRow drPublisher in dtPublishers.Rows) { Console.WriteLine(drPublisher["Pub_Id"] + "\t" + drPublisher["Pub_Name"]); Console.WriteLine("====================="); foreach(DataRow drTitle in drPublisher.GetChildRows("PubTitles")) { Console.Write(drTitle["Title"] + "\t"); Console.Write((drTitle["price"].ToString() != null ? drTitle["price"] : "n/a")); } } |
原文轉自:http://www.anti-gravitydesign.com