C# 为什么数据源显示为Datagridview的null,而它';是否已为s分配了数据?

C# 为什么数据源显示为Datagridview的null,而它';是否已为s分配了数据?,c#,winforms,datagridview,ado.net,C#,Winforms,Datagridview,Ado.net,我有以下代码从返回的datatable填充datagridview DataTable dtCourse = Course.GetAllCourses(); for (int i = 0; i < dt.Rows.Count; i++) { dgvAvailableCourses.Rows.Add(); dgvAvailableCourses[0, i].Value = dtCourse.Rows[i][0]; //set image dgvAvaila

我有以下代码从返回的datatable填充datagridview

DataTable dtCourse = Course.GetAllCourses();

for (int i = 0; i < dt.Rows.Count; i++)
{
    dgvAvailableCourses.Rows.Add();
    dgvAvailableCourses[0, i].Value = dtCourse.Rows[i][0];

    //set image
    dgvAvailableCourses[1, i].Value = SMSV100.Properties.Resources.media_playback_stop_6;

    dgvAvailableCourses[2, i].Value = dtCourse.Rows[i][1];
    dgvAvailableCourses[3, i].Value = dtCourse.Rows[i][2];
    dgvAvailableCourses[4, i].Value = dtCourse.Rows[i][3];
    dgvAvailableCourses[5, i].Value = dtCourse.Rows[i][4];
    dgvAvailableCourses[6, i].Value = dtCourse.Rows[i][5];
    dgvAvailableCourses[7, i].Value = dtCourse.Rows[i][6];

    Console.WriteLine(dgvAvailableCourses.DataSource);
}
DataTable dtCourse=Course.GetAllCourses();
对于(int i=0;i
dgvAvailableCourses
DataGridview
dtCourses
是从
GetAllCourses()返回的
datatable

如您所见,我已将
datagridview
的列映射到
datatable
的列,并添加了行。有趣的是,当我试图使用
控制台读取
数据源时,writeline()
我使用了一个断点,它显示
数据源为空

为什么这个数据源显示为空,而它已经通过循环分配了数据

如何克服这个问题,我需要访问这个
datagridview
的基础表,以便进行一些计算,但我不能这样做,因为它显示为null

PS-
Datagridview
显示没有任何问题的数据,但它显示
数据源的
null

谢谢

我猜您没有将DataGridView绑定到源代码,您只是手动添加行。如果您执行了
dgvavavailablecourses.DataSource=dtcourses
,我认为您将“正确”地完成绑定(我假设您有充分的理由使用循环,而不仅仅是设置DataSource属性)。

我猜您没有将DataGridView绑定到源代码,您只是手动添加行。如果您执行了
dgvavavailablecourses.DataSource=dtcourses
,我认为您将“正确”地完成绑定(我假设您有充分的理由使用循环,而不仅仅是设置DataSource属性)。

我猜您没有将DataGridView绑定到源代码,您只是手动添加行。如果您执行了
dgvavavailablecourses.DataSource=dtcourses
,我认为您将“正确”地完成绑定(我假设您有充分的理由使用循环,而不仅仅是设置DataSource属性)。

我猜您没有将DataGridView绑定到源代码,您只是手动添加行。如果您执行了
dgvavavailablecourses.DataSource=dtcourses
,我认为您将“正确”地完成绑定(我假设您有充分的理由使用循环,而不仅仅是设置DataSource属性).

yes'因为我不希望所有列都分配给datagriview:),所以在这种情况下,我需要创建绑定源?我认为您可以在设计时创建列,然后使用属性
AutoGenerateColumns=false
。对于ASP.NET GridView,它的工作原理是这样的。否则,您可以在绑定列后隐藏/删除这些列。是的,因为我不希望所有列都分配给datagriview:),因此在这种情况下,我需要创建绑定源?我认为您可以在设计时创建列,然后使用属性
AutoGenerateColumns=false
。对于ASP.NET GridView,它的工作原理是这样的。否则,您可以在绑定列后隐藏/删除这些列。是的,因为我不希望所有列都分配给datagriview:),因此在这种情况下,我需要创建绑定源?我认为您可以在设计时创建列,然后使用属性
AutoGenerateColumns=false
。对于ASP.NET GridView,它的工作原理是这样的。否则,您可以在绑定列后隐藏/删除这些列。是的,因为我不希望所有列都分配给datagriview:),因此在这种情况下,我需要创建绑定源?我认为您可以在设计时创建列,然后使用属性
AutoGenerateColumns=false
。对于ASP.NET GridView,它的工作原理是这样的。否则,可以在绑定列后隐藏/删除这些列。