【问题标题】:DataGridView DataSource not updating with SelectAll checkbox methodDataGridView DataSource 未使用 SelectAll 复选框方法更新
【发布时间】:2012-09-21 16:17:48
【问题描述】:

我有以下代码在复选框的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。它循环通过的复选框列在视觉上更新良好。

所以当我执行以下操作时,在用户按下按钮后,选中的行在复选框列中仍然有一个 false 值。

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

知道我哪里出错了吗?

【问题讨论】:

  • 请注意,我在循环之后尝试了EndEdit()CommitEdit() 等操作,但均未成功。
  • 你也可以发布aspx页面吗?
  • 为什么不用值更新底层数据源?
  • @UWSkeletor 该死的,我什至没有尝试过。 ://

标签: c# asp.net datagridview


【解决方案1】:

所以上面的方法效果很好。

周末后回到它,我发现奇怪的是,在我们处理我们想要的东西之前调用了该方法,而不是之后。

这是一个为新数据过早重置 gui 的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多