天天看點

用聯系的觀點看問題——有感DataGridView多選删除問題的解決

低級錯誤!本來想實作一個簡單的應用。在DataGridView控件中,加入CheckBox列實作多選删除。

開始的思路,周遊CheckBox列,如果打了勾則進行删除操作:

            for (int i = 0; i < dataGridView1.Rows.Count; i++)

            {

                object obj = dataGridView1.Rows[i].Cells[0].Value;

                string select = obj == null ? "" : obj.ToString();

                if (select.Trim() == "1")

                {

                    //在這裡從資料源中删除資料行

                }

            }

測試發現時而準,時而不準,引起警覺,恍然大悟,這絕對是個低級錯誤啊。因為資料綁定控件有個友善的特性,資料源的變化可以直接展現到控件的表現上,可是在這裡,友善變成了不友善,它會導緻周遊的不準确。

第二種思路,先收集選擇的條目,然後進行統一删除。

                    DataRowView drv = dataGridView1.Rows[i].DataBoundItem as DataRowView;

                    SelectRow.Add(drv.Row);//SelectRow緩存選中的資料源行

            foreach (DataRow dr in SelectRow)

                _Reasons.Rows.Remove(dr);

這樣就OK啦。

本文轉自 王傑瑞 51CTO部落格,原文連結:http://blog.51cto.com/wangjierui/56358,如需轉載請自行聯系原作者

繼續閱讀