无法在委托函数中向datagridview添加行

时间:2012-07-05 20:41:12

标签: c# datagridview delegates

我正在尝试向公共函数中的现有datagridview添加新行。每当我尝试访问datagridview的任何数据属性时,我都会得到null值。 datasource属性为null,因此我无法向其添加新元素。我已经创建了一个新的datagridviewrow,但是CreateCells方法不会复制列并抛出索引超出范围的错误。有谁知道我在这里尝试做什么可能有什么问题?

以下是整个功能的代码:

public void AddToGrid(Attendance newRecord)
    {
        try
        {
            DataGridViewRow newRow = new DataGridViewRow();
            newRow.CreateCells(AttendanceGrid);
            newRow.Cells[1].Value = newRecord.EmployeeNumber;
            newRow.Cells[2].Value = newRecord.ScheduledDate;
            newRow.Cells[3].Value = newRecord.SIn;
            newRow.Cells[4].Value = newRecord.SOut;
            newRow.Cells[5].Value = newRecord.AIn;
            newRow.Cells[6].Value = newRecord.AOut;
            newRow.Cells[7].Value = newRecord.RecordCode;
            newRow.Cells[8].Value = newRecord.ReasonCode;
            newRow.Cells[9].Value = newRecord.Comments;

            AttendanceGrid.Rows.Add(newRow);
            AttendanceGrid.Refresh();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message + ":  " + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

任何人都可以看到我正在做的事情的问题吗?

1 个答案:

答案 0 :(得分:1)

您应该拥有DatagridView的数据源,例如DataTable。

然后通过绑定源将该DataTable绑定到Datagridview。

您可以向DataTable添加新行,然后这些行将自动反映在Datagrid中。