2012-08-10 43 views
0

我從列表數據庫中檢索整個數據現在我有四個類,如:我在顯示成員值中出現錯誤,如何解決此問題? ?

Student類:

public class StudentTable 
{ 
    public string StudentID { get; set; } 
    public string StudentName { get; set; } 

    public StudentTable() 
    { 
    } 

    public StudentTable(string aStudentID, string aStudentName) 
    { 
     StudentID = aStudentID; 
     StudentName = aStudentName; 
    } 
} 

課程班

public class CourseTable 
{ 
    public string CourseID { get; set; } 
    public string CourseName { get; set; } 
    public int Credits { get; set; } 

    public CourseTable() 
    { 
    } 

    public CourseTable(string aCourseID, string aCourseName, int aCredits) 
    { 
     CourseID = aCourseID; 
     CourseName = aCourseName; 
     Credits = aCredits; 
    } 
} 

招生類

public class Enrollment 
{ 
    public StudentTable StudentData { get; set; } 
    public CourseTable CourseData { get; set; } 
    public DateTime DOE { get; set; } 

    public Enrollment() 
    { 
    } 

    public Enrollment(StudentTable aStudentData, CourseTable aCourseData, DateTime aDOE) 
    { 
     StudentData = aStudentData; 
     CourseData = aCourseData; 
     DOE = aDOE; 
    } 
} 

StudentScore分類:

public class StudentScore 
{ 

    public Enrollment EnrollmentData { get; set; } 
    public int Score { get; set; } 

    public StudentScore() 
    { 
    } 

    public StudentScore(Enrollment aEnrollmentData, int aScore) 
    { 
     EnrollmentData = aEnrollmentData; 
     Score = aScore; 
    } 
} 

和我通過查詢從數據庫中檢索數據現在我想顯示StudentID從列表中,但在StudentScore類中我有EnorllmentData不StudentID。

try 
{ 
    var aStudentScore = EnrollmentDB.GetAllScore(); 
    comboBox3.DataSource = aStudentScore; 

    comboBox3.DisplayMember = "StudentID"; 
    comboBox3.ValueMember = "CourseID"; 
    //comboBox3.ValueMember = "Score"; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message, ex.GetType().ToString()); 
} 

它告訴我一個DisplayMember錯誤,您可以請幫我解決這個問題,在becaouse類StudentScore沒有StudentID變量,這樣我怎麼能顯示從StudentScore類StudentID?

+0

「它向我展示了一個DisplayMember錯誤」 - 你能更精確嗎?*總是*在問題中給出錯誤信息。 – 2012-08-10 20:11:18

+0

您是否將C#重寫爲VB.NET?你在C#,VB.NET或兩者中都有錯誤嗎?什麼是錯誤? – abatishchev 2012-08-10 20:12:29

回答

0

因此,首先你有不能綁定到新的顯示成員錯誤,這是由喬恩解釋,告訴你如何使用點符號。

之後,您現在正在獲取無法鑄造錯誤。沒有看到GetAllScore方法,我不能確切地說出原因。但是,您可以在代碼中完成繁重的工作,並通過向StudentScore添加只讀屬性來返回想要用作顯示和值成員的內容,從而簡化綁定。 (我不得不說,使用StudentID作爲DisplayMember和CourseID作爲ValueMember沒有任何意義,我。)

這樣的事情添加到您的StudentScore:

public String UseAsDisplayMember 
{ 
    get 
    { 
     return EnrollmentData.StudentData.StudentID; 
    } 
} 
public string UseAsValueMember 
{ 
    get 
    { 
     return EnrollmentData.CourseData.CourseID; 
    } 
} 

然後設置數據綁定作爲:

comboBox3.DisplayMember = "UseAsDisplayMember"; 
comboBox3.ValueMember = "UseAsValueMember"; 

這應該讓你工作,但它感覺更像是一個創可貼,而不是真正的修復。

+0

非常感謝 – user1059932 2012-08-10 21:40:51

1

您的StudentScore類型未公開StudentIDCourseID,但這就是您要綁定的內容。你如何期望這項工作?

可能能夠使用:

comboBox3.DisplayMember = "EnrollmentData.StudentData.StudentID"; 
comboBox3.ValueMember = "EnrollmentData.CourseData.CourseID"; 

...這取決於你使用任何是否結合是能夠導航性能的方式。

順便說一句,你的StudentTableCourseTable類型的命名是不恰當的 - 那一個實例並不代表StudentTable - 它代表了一個表一行。只要調用那些類型StudentCourse會更有意義。

+0

現在它顯示這個錯誤:**無法投入'System.Windows.Forms.RelatedPropertyManager'類型的對象來鍵入'System.Windows.Forms.CurrencyManager'。** – user1059932 2012-08-10 20:29:06

+0

@ user1059932:恐怕我沒有對此有所瞭解。這將有助於如果你發佈完整的堆棧跟蹤。 – 2012-08-10 20:30:06

+0

首先它顯示:**不能綁定到新的顯示成員。參數名稱:newDisplayMember ** – user1059932 2012-08-10 20:30:35

相關問題