0

datagridview のセルの値を一意に保つことに少し問題があります...説明させてください:私のデータベーステーブルは、2 つの属性、所有者 ID (主キー) と所有者名で構成されています...

DB に 3 つのエントリがあるとします。

    1 A
    2 B
    3 C

そして、datagridview で B を削除して DB を更新すると、次のものが残ります。

    1 A
    3 C

そして、新しい所有者を追加しようとすると、D だとしましょう。主キーであるため、彼の ID を 4 にしたいのですが、次のようになります。

    1 A
    3 C
    3 D

したがって、所有者 ID を一意に保つ必要があることは明らかです。私はこのコード行を使用して仕事をしていましたが、上記の結果が得られています:

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

任意のヒント?

4

2 に答える 2

0

datagridview のセルの値を一意に保つには データベースで一意の値を作成する必要があります。1.ownerID はデータベースの IDENTITY である必要があります。テーブル デザイナーまたはスクリプトで設定して、テーブルを作成できます。

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

[ownerName] [varchar](50) NULL

) オン [プライマリ]

  1. ステートメントの挿入: YorTableName (ownerName) 値 (@ownerName) に挿入 @@Identity を選択して ownername のみを挿入します。データベースは ownerID の一意の値を作成し、それを行に挿入します @@Identity を選択すると、この一意の値が取得されます

3.datagridviewer のフィールド ownerID を DB から返された値で更新します。

于 2013-04-24T19:15:09.800 に答える
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 に答える