读书人

DatagridView编者事件

发布时间: 2013-07-16 22:38:04 作者: rapoo

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)
好好研究一下

读书人网 >C#

热点推荐