0

我在保持datagridview中单元格的值唯一时遇到了一点问题......让我解释一下:所以,我的数据库表包含2个属性,ownerID(主键)和ownerName......

假设我的数据库中有 3 个条目:

    1 A
    2 B
    3 C

当我在 datagridview 中删除 B 并更新 DB 时,我剩下:

    1 A
    3 C

当我尝试添加新所有者时,假设它是 D,我希望他的 ID 为 4,因为它是主键,但我得到的是:

    1 A
    3 C
    3 D

所以,我显然需要保持我的 ownerID 唯一。我正在使用这行代码来完成这项工作,但它产生了上面的结果:

    private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
    {
            dataGridViewOwner.CurrentRow.SetValues(dataGridViewOwner.RowCount);
    }

有小费吗?

4

2 回答 2

0
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
    {
            int max=0;
            for(int i=0;i<dataGridViewOwner.Rows.Count;i++)
              if(dataGridViewOwner.Rows[i].Cells[0].Value!=null && dataGridViewOwner.Rows[i].Cells[0].Value!=DBNull.Value )
              {
                  try
                   {
                         int pre= int.Parse(dataGridViewOwner.Rows[i].Cells[0].Value.ToString());
                        if(pre>max)
                              max=pre;
                   }
                  catch
                 {
                   }
              }//if
             max++;
            dataGridViewOwner.CurrentRow.Cells[0].Value=max;//if assume crrent row is target new row
    }
于 2013-04-25T09:49:11.280 回答
0

要保持 datagridview 中单元格的值唯一,您应该在数据库中设置唯一值。为此: 1.ownerID 应该是数据库中的 IDENTITY 您可以在表设计器或脚本中设置它来创建表:

CREATE TABLE [dbo].[YorTableName] ([ownerID] [int] IDENTITY(1,1) NOT NULL,

[ownerName] [varchar](50) NULL

) 开 [主要]

  1. 插入语句:插入 YorTableName (ownerName) Values (@ownerName) 选择 @@Identity 您只插入 ownername ,数据库为 ownerID 创建唯一值并将其插入行中 Select @@Identity 检索此唯一值

3.使用从数据库返回的值更新datagridviewer中的字段ownerID

于 2013-04-24T19:15:09.800 回答