Datagridview 中的checkbox 選中或勾選狀態失效


1、問題描述,先選中第一行,再取消選擇,然后點擊部門全選,第一行沒有打鈎,狀態是不選中的狀態。

 

 

2、分析代碼

先選中第一行,單元格的單擊事件中 改變選中狀態為1,第一行取消選擇,單元格的單擊事件中 改變選中狀態為0

 private void dgvDept_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex == 1)
            {
                if (this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value.ToString() == "1")
                {
                    this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value = 0;
                }
                else
                {
                    this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value = 1;
                }
            }
          
        }

2、點擊全選按鈕,此時第一個單元格沒有結束它的編輯狀態,此時執行全選,單元格1的狀態先變為1,然后才會結束他的編輯狀態,再次狀態改變事件把值賦為0,

private void btnDeptSelectAll_Click(object sender, EventArgs e)

        {
            dgvDept.EndEdit(); //此處必須加上結束編輯狀態代碼,切記
            if (btnDeptSelectAll.Text == "部門全選")
            {
                btnDeptSelectAll.Text = "部門全不選";
                btnDeptSelectAll.Image = global::KJMonitorSystem.Properties.Resources.SelectNull;
                for (int i = 0; i < dgvDept.Rows.Count; i++)
                {
                    this.dgvDept.Rows[i].Cells["colSelect"].Value = 1;
                }
            }
            else
            {
                btnDeptSelectAll.Text = "部門全選";
                btnDeptSelectAll.Image = global::KJMonitorSystem.Properties.Resources.SelectAll;
                for (int i = 0; i < dgvDept.Rows.Count; i++)
                {
                    this.dgvDept.Rows[i].Cells["colSelect"].Value = 0;
                }
            }
            //dgvDept.ClearSelection();
            //dgvDept.Refresh();
        }

 

當你需要保存修改過后的內容,必須將光標指向另外一行, DataGridView才會將編輯過后的數據提交到數據緩存區,當你操作完DataGridview的時候,又沒有移動另一行,你在上面的修改有可能還沒有提交到數據緩存區,你在執行代碼獲取DataGridView上面修改的行數據時不一定能獲取到修改后的內容,所以,想重新讀取到修改后的內容,為了安全起見,手動執行一下DataGridView.EndEdit(),讓修改后的內容提交到緩存區,這樣就可以讀取到DataGridView修改后的內容了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM