使用BindingSource或其他方法在网格中显示课程名称而不是课程代码

时间:2014-10-31 13:51:47

标签: c# sql data-binding datagridview

我在数据库中有数据。我读了这些数据并将其显示在网格中。为此,我使用DataSet, SqlDataAdapter, BindingSource and DataGridView 表格如下。

+---------+------------+-------------+
|   NAME  |   SURNAME  | LESSON_CODE |
+---------+------------+-------------+
|  Joe    |  Black     |  110        |          
|  Mia    |  Sommers   |  120        | 
|  Hasan  |  Almalik   |  100        | 
|  Anna   |  Volkova   |  100        | 
|  Robert |  Jackson   |  115        | 
|  Tony   |  Bernard   |  120        | 
|  Diana  |  Albert    |  115        | 
|  Tom    |  Bruce     |  110        |
+---------+------------+-------------+

我从像这个sql查询的表中读取这些数据。

string sql = "SELECT Name, Surname, Lesson_Code as Lesson FROM Class"
SqlDataAdapter adapter  = new SqlDataAdapter();
SqlCommand selectCommand = new SqlCommand(sql,connection);
adapter.SelectCommand = selectCommand;

DataSet ds = new DataSet();
adapter.Fill(ds,"Class");

BindingSource bs = new BindingSource(ds,"Class");
gridClass.DataSource = bs;

确定。没有任何问题 但我不想在网格中显示课程代码。我有一个课程和课程代码列表。

100 - MATH  
110 - GEOMETRY  
115 - BIOLOGY  
120 - ASTRONOMY  
etc.

我不将此列表存储在数据库中。如果我将这个列表存储在表中,我可以使用表连接的sql查询来解决这个问题 但我不想这样做。我不想使用SQL查询。我想从代码中做到这一点。 所以我认为我可以用BindingSource解决这个问题。但我不知道怎么样?或者可能有另一种方式?

2 个答案:

答案 0 :(得分:0)

如果您说您有另一个表格,其中包含与代码相关联的课程名称,那么您必须进行联接。您的查询应该是这样的。

SELECT a.Lesson_Name, b.Surname, b.Name FROM LessonTable a, Class b WHERE a.Lesson_Code = b.Lesson_Code

答案 1 :(得分:0)

我认为您希望将结果绑定到数据表中。

然后使用新的数据表,用前一个数据表和课程列填充