2013-03-09 43 views
2

我的Windows窗體應用程序中有一個UltraGrid,它必須有兩個樂隊。我能夠設置家長帶沒有問題,通過使用下面的代碼:在UltraGrid中設置子樂隊的數據源

 Try 
      con.Open() 
      da = New SqlDataAdapter("SELECT o.OJTID, o.Surname + ', ' + o.FirstName + ' ' + o.MiddleName AS FullName, t.TotalGrade FROM tblOJTs o INNER JOIN tblTGrades t ON o.OJTID = t.OJTID", con) 
      da.Fill(ds, "tblOGrades") 
      con.Close() 
     Catch ex As Exception 
      MsgBox("Error connecting to databe.", MsgBoxStyle.Critical) 
      MsgBox(ex.ToString) 
      con.Close() 
      Exit Sub 
     End Try 

     UltraGrid1.DisplayLayout.ViewStyle = Infragistics.Win.UltraWinGrid.ViewStyle.MultiBand 
     UltraGrid1.DataSource = ds.Tables("tblOGrades") 

事情現在的問題是,我不知道如何設置兒童樂隊的數據源。由於分層數據源功能,我不會遇到UltraWebGrid的這種問題,但我認爲它不適用於WinForms。我知道你們會提前幫助謝謝:)

回答

4

你需要在你的DataSet中填充另一個DataTable,其中包含與第一個表相關的數據。之後,您應該定義兩個datable之間的關係,最後將UltraWinGrid的DataSource設置爲DataSet本身,而不是單個DataTable。

例如:

con.Open() 
da = New SqlDataAdapter("SELECT o.OJTID, o.Surname ....", con) 
da.Fill(ds, "tblOGrades") 
da = new SqlDataAdapter("SELECT .related data....", con) 
da.Fill(ds, "tblRelated") 
ds.Relations.Add("Grades_Relation", _ 
    ds.Tables("tblOGrades").Columns("OJTID"), _ 
    ds.Tables("tblRelated").Columns("relatedID")) 
con.Close() 

.... 

UltraGrid1.DataSource = ds 
+0

您好史蒂夫,你的答案的偉大工程,謝謝。現在將這標記爲可以接受的答案。榮譽 – GianIsTheName 2013-03-09 23:44:51

+0

非常有幫助,只是想補充一點,我添加使用括號時不使用圓括號在列合格時: ds.Relations.Add(ds.Tables [「mytable1」]。Columns [「mycol」],... – 2014-11-26 16:49:49

+0

沒關係,OP代碼是VB.NET所以括號.C#需要方括號。 – Steve 2014-11-26 17:44:07