DataGridView DataSource未使用SelectAll复选框方法更新

时间:2012-09-21 16:17:48

标签: c# asp.net datagridview

我有以下代码在复选框的CheckedChanged事件上运行。

/// <summary>
/// Determine whether to select all order records
/// </summary>
/// <param name="sender">determine sender object</param>
/// <param name="e">event args</param>
private void CbSelectAll_CheckedChanged(object sender, EventArgs e)
{
    if (this.dgvOrderLines.Rows.Count != 0)
    {
        bool value = this.CbSelectAll.Checked;

        for (int i = 0; i < this.dgvOrderLines.RowCount; i++)
        {
            this.dgvOrderLines[0, i].Value = value;
        }

        if (value)
        {
            this.btnFailed.Enabled = true;
            this.BtnDownload.Enabled = true;
        }
        else
        {
            this.btnFailed.Enabled = false;
            this.BtnDownload.Enabled = false;
        }
    }
}

问题是这似乎并没有真正更新下划线DataSource。它循环的复选框列可以直观地更新。

因此,当我执行以下操作时,在用户按下按钮后,所选行在复选框列中仍然具有错误值。

Order[] orderlines = ((SortableBindingList<Order>)this.dgvOrderLines.DataSource).Where(x => x.Include == true).ToArray();

我想知道哪里出错了?

1 个答案:

答案 0 :(得分:0)

事实证明,上述方法工作得很好。

在周末之后再回过头来看,奇怪的是,我们在处理我们想要的东西之前调用了这个方法,而不是之后。

这是一个过早重置gui以获取新数据的案例。