首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

DatagridView编者事件

2013-07-16 
DatagridView编辑事件 private void dgvData_CellEndEdit(object sender, DataGridViewCellEventArgs e){s

DatagridView编辑事件
 private void dgvData_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            string Area = this.dgvData.Rows[e.RowIndex].Cells["Area"].Value.ToString();    //获取区域列值
            string Locate = this.dgvData.Rows[e.RowIndex].Cells["Location"].Value.ToString();  //获取位置列值

            if (Area != "" && Locate != "")   //判断都不为空
            {
                bool isNo = false;  //用于判断该区域和位置是否存在
                for (int i = 0; i < this.dgvData.Rows.Count - 2; i++)
                {
                    if (Area == dgvData.Rows[i].Cells["Area"].Value.ToString() && Locate == dgvData.Rows[i].Cells["Location"].Value.ToString())   //判断该区域和位置是否已经存在
                    {
                        isNo = true;  //已存在
                        break;
                    }
                }

                if (isNo == true)   //如果存在可选择是否覆盖
                {
                    if (MessageBox.Show("该区域中的位置已经存在!是否覆盖?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                    {


                        for (int i = 0; i < this.dgvData.Rows.Count; i++)
                        {
                            if (this.dgvData.Rows[i].Cells["Area"].Value.ToString() == Area && this.dgvData.Rows[i].Cells["Location"].Value.ToString() == Locate)
                            {
                               // this.dgvData.Rows[i + 2].Selected = true;
                                this.dgvData.Rows.RemoveAt(i);  //存在,移除已经存在的

                                break;
                            }
                        }
                    }
                    else
                    {
                        this.dgvData.Rows.RemoveAt(e.RowIndex);   //选择不覆盖则移除添加的行
                    }
                }
            }
        }

当添加一条已经存在的。
选择不覆盖,则会把当前的移除。
选择覆盖,会把已经存在的移除。但是当前添加的也没有了???
这是什么情况??   求大侠帮忙

DataGridView
[解决办法]
for (int i = this.dgvData.Rows.Count-1; i >= 0; i--)
删除要倒着来
[解决办法]

引用:
Quote: 引用:

你把dgv转成dt,结合dataview来判断是否有相同的数据,你这样判断数据不准确

不能用dt,如果用dt的话  我连续添加2条一样的也不会报错。
我用的是
 SqlDataAdapter adp = new SqlDataAdapter("select ShelfID,Area,GroupGoods,Location,SegmentNum from dbo.ShelfInformation", DBHelp.Connection);
            SqlCommandBuilder builder = new SqlCommandBuilder(adp);
            adp.Fill(dt);
            adp.Update(dt);


你在判断的时候 把 dgv.DataSource as  DATABALE();
DataTable dtCostName = (dgvFeeType.DataSource as DataTable).Copy();

                DataView dv = new DataView(dtCostName);
                if (dv.Count != dv.ToTable(true, "CostName").Rows.Count)
好好研究一下

热点排行